DB-Engines에 따르면 MySQL은 전 세계에서 가장 인기 있는 오픈소스 데이터베이스 중 하나입니다. 첫 번째 버전은 1995년에 출시되었으며 그 이후로도 지속적으로 개발되어 오늘날에도 매우 인기 있는 관계형 데이터베이스가 되었습니다. MySQL은 다양한 오픈소스 및 상용 버전으로 구성된 생태계에서 성공을 거두었습니다. MySQL은 온프레미스와 클라우드 모두에서 널리 사용됩니다. MySQL의 주요 클라우드 서비스 제공업체는 Google Cloud, Oracle, Amazon Web Services(AWS), Microsoft Azure입니다.
현재 시중에는 최적화, 확장성, 클러스터링, 재해 복구 등을 위한 기능을 추가하여 MySQL을 확장하는 다양한 MySQL 버전이 있습니다. MySQL을 포크하여 빌드한 현재 활성화된 두 가지 주요 데이터베이스는 MariaDB와 MySQL용 Percona Server입니다.
Oracle은 MySQL Community Edition과 Enterprise Edition을 모두 개발하고 유지관리합니다. Enterprise Edition에는 Oracle에서 제공하는 기술 지원이 포함되며 MySQL 엔터프라이즈 모니터링, PAM 인증, 향상된 보안, 향상된 성능 및 확장성, 엔터프라이즈 백업, 엔터프라이즈 감사, 엔터프라이즈 클러스터 관리, 스레드 풀링 등 다양한 기능을 제공합니다.
MySQL의 창립자는 오픈소스로 유지되도록 보장한 MariaDB를 만들었습니다. JSON 지원, 멀티 소스 복제, 병렬 스레드 복제 등 MySQL의 일부 기능은 실제로 MySQL 보다 MariaDB에서 더 일찍 출시되었습니다. MySQL 대비 MariaDB의 주요 이점은 다음과 같습니다.
Percona라는 회사가 MySQL용 Percona Server를 개발하고 유지관리합니다. Percona는 MySQL을 비롯해 수년간 많은 작업을 수행하여 이를 최적화하고 새로운 기능도 도입했습니다. MySQL 대비 Percona 사용의 주요 이점은 다음과 같습니다.
데이터베이스마다 특정 사용 사례를 타겟팅하는 고유 기능이 있으므로 애플리케이션의 요구 사항에 따라 선택할 데이터베이스가 결정됩니다. 예를 들어 애플리케이션에 분석이 필요한 경우 Percona의 ClickHouse나 MariaDB의 ColumnStore를 사용할 수 있지만 MySQL에서는 이러한 옵션이 제공되지 않습니다. 마찬가지로, MySQL의 Community 버전에서 사용할 수 없는 스레드 풀 기능을 사용하려면 Enterprise MySQL 또는 오픈소스 스레드 풀 기능을 Percona와 MariaDB 중에서 선택해야 합니다.
클라우드 데이터베이스는 공용 또는 하이브리드 클라우드 환경에서 실행되도록 구축된 데이터베이스로 조직 내의 데이터를 구성, 저장, 관리하는 데 도움이 됩니다. 클라우드 데이터베이스는 관리형 Database as a Service(DBaaS)로 제공되거나 클라우드 기반 가상 머신(VM)에 배포하며 사내 IT팀에서 자체 관리할 수 있습니다. 관리형 MySQL의 주요 클라우드 제공업체는 다음과 같습니다.
Google Cloud
Google Cloud는 사용자가 직접 관리해야 하는 가상 머신 호스팅 버전의 MySQL과 완전 관리형 서비스인 Cloud SQL을 모두 제공합니다.
Amazon Web Services(AWS)
Amazon Web Services(AWS)는 MySQL용 VM 호스팅 옵션과 RDS 형식의 완전 관리형 솔루션을 제공합니다. AWS는 Aurora 서비스도 제공합니다. Aurora는 MySQL과 호환되는 MySQL 기능으로 추가 기능이 포함되어 있습니다.
Azure SQL Database
Azure는 다른 클라우드 공급업체의 모델과 유사한 MySQL용 배포 모델, 즉 Azure VM의 MySQL 형식인 가상 머신 옵션과 Azure Database for MySQL 형식의 완전 관리형 버전을 제공합니다.
Oracle Cloud
Oracle은 가상 머신에서 MySQL을 호스팅할 수 있는 기능을 제공합니다. 또한 MySQL HeatWave Database Service라는 새로운 완전 관리형 서비스가 도입되었습니다.
Digital Ocean
Digital Ocean에서는 가상 머신에서 MySQL을 호스팅할 수도 있습니다. MySQL용 완전 관리형 호스팅 옵션도 제공합니다.
많은 기업이 MySQL을 확장하고 MySQL 데이터베이스에 장애 조치와 고가용성을 제공하는 제품을 만들었습니다. 일부는 MySQL과 함께 사용되는 직접적인 도구이고, 다른 일부는 MySQL 소스 코드를 수정하여 고가용성 또는 다중 상위 클러스터를 제공하는 별도의 제품을 만든 것입니다. 널리 사용되는 MySQL HA 및 확장성 솔루션은 다음과 같습니다.
InnoDB 클러스터는 3개 이상의 MySQL 서버 인스턴스로 구성되어 있으며 고가용성과 확장 기능을 제공합니다. InnoDB 클러스터는 그룹 복제가 포함된 MySQL 셸, MySQL 라우터, MySQL 서버로 구성됩니다. 자세한 내용은 23장 InnoDB 클러스터를 참조하세요.
Percona XtraDB Cluster는 고가용성, 병렬 복제, 확장성 기능을 제공하는 동기식 클러스터링 솔루션입니다. Percona XtraDB Cluster에는 ProxySQL을 사용하여 Percona XtraDB Cluster 노드를 자동으로 구성하는 ProxySQL 관리자 도구가 포함되어 있습니다. 자세한 내용은 Percona XtraDB 클러스터를 참조하세요.
MariaDB Galera Cluster는 고가용성과 확장성 기능을 제공하는 MariaDB용 가상 동기식 다중 기본 클러스터입니다. MariaDB 서버와 Galera wsrep 제공업체 라이브러리를 기반으로 합니다. 자동 노드 조인, true 병렬 복제, 다중 기본 토폴로지 등의 기능을 제공합니다. 자세한 내용은 MariaDB Galera 클러스터를 참조하세요.
Tungsten 클러스터는 MySQL 데이터베이스를 클러스터로 배포하고 관리하는 데 필요한 모든 핵심 구성요소를 포함하는 간편한 단일 패키지를 제공합니다. 지리적 클러스터링 솔루션을 제공하며 Tungsten Manager, Replicator, Connector, 데이터 노드, 대시보드로 구성됩니다. 자세한 내용은 Continuent Tungsten 클러스터를 참조하세요.
MariaDB Xpand는 트랜잭션 워크로드를 위한 ACID 준수 분산 SQL, 고가용성, 내결함성, 쓰기 확장, 수평 확장을 제공합니다. MariaDB Xpand는 MariaDB Enterprise의 구성요소입니다. 하나 이상의 MaxScale 노드와 3개 이상의 Xpand 노드로 구성됩니다. 자세한 내용은 MariaDB Xpand를 참조하세요.
ScaleArc는 고가용성을 제공하는 데이터베이스 부하 분산 소프트웨어입니다. 자세한 내용은 ScaleArc를 참조하세요.
Vitess에는 고가용성과 확장성을 제공하기 위해 애플리케이션에 샤딩 로직을 추가하지 않고도 데이터베이스를 확장할 수 있는 샤딩 기능이 내장되어 있습니다. 자세한 내용은 Vitess를 참조하세요.
MySQL 도구는 웹 기반, 명령줄 인터페이스(CLI), 그래픽 사용자 인터페이스(GUI) 등 모든 형식으로 존재합니다. MySQL에는 데이터베이스 설계, 개발, 관리, 백업, 성능 모니터링, 알림을 위한 다양한 오픈소스 및 상용 도구가 있습니다.
GUI와 함께 많이 사용되는 MySQL 모니터링 도구는 다음과 같습니다.
Percona Monitoring and Management, Prometheus, MySQL Enterprise Monitor, New Relic, SolarWinds, HeidiSQL, AppDynamics, Datadog, SQLyog
많이 사용되는 관리, 개발 또는 유틸리티 도구는 다음과 같습니다.
많이 사용되는 도구는 다음과 같습니다.
알림 메커니즘으로 오류율, 트래픽, 쿼리 패턴을 분석하는 그래프가 있는 기타 주요 모니터링 도구로는 New Relic, Zabbix, Cortex, Prometheus, Grafana가 있습니다.
요즘에는 Docker 컨테이너 이미지를 사용하여 Kubernetes 클러스터를 통해 데이터베이스를 실행하는 것이 인기를 얻고 있습니다. 이는 코드를 사용하여 데이터베이스 관리, 쉽고 빠른 배포, 데이터 보호, 애플리케이션과의 격리, 공유 리소스 사용성에 유용합니다. 기본적으로 Docker의 모든 장점을 데이터베이스 시스템에서 활용할 수 있습니다. MySQL에 이미 사용 가능한 Kubernetes 연산자도 몇 가지 있습니다. 하지만 이 부분에서는 개선할 여지가 많습니다.
MySQL용 Cloud SQL이 혁신에 어떤 도움이 되는지 알아보세요. 문서 보기