DB-Engines によると、MySQL は世界で最も人気のあるオープンソース データベースの一つです。最初のバージョンが 1995 年にリリースされて以来、継続的に開発され、現在でも非常に人気のあるリレーショナル データベースとなっています。MySQL の成功は、幅広いオープンソース エディションと商用エディションで構成されるエコシステムにあります。MySQL はオンプレミスとクラウドの両方で広く使用されています。MySQL の主なクラウド サービス プロバイダは、Google Cloud、Oracle、Amazon Web Services(AWS)、Microsoft Azure です。
現在市場ではさまざまな種類の MySQL が市販されており、最適化、スケーラビリティ、クラスタリング、障害復旧などの機能を追加することで MySQL を拡張できます。MySQL をフォークして構築され、現在アクティブになっている主な 2 つのデータベースは、MariaDB と Percona Server for MySQL です。
Oracle は MySQL Community Edition と Enterprise Edition の両方を開発および保守しています。Enterprise Edition には Oracle が提供するテクニカル サポートが含まれており、MySQL Enterprise Monitoring、PAM 認証、強化されたセキュリティ、パフォーマンスとスケーラビリティの強化、エンタープライズ バックアップ、エンタープライズ監査、エンタープライズ クラスタ管理、スレッド プーリングなどの追加の機能があります。
MySQL の創業者たちは、オープンソースとして維持されることを保証しながら MariaDB を作成しました。MySQL の一部の機能(JSON サポート、マルチソース レプリケーション、並列スレッド レプリケーションなど)は、実際には MySQL よりも早く MariaDB でリリースされました。MySQL と比較した MariaDB の主なメリットは次のとおりです。
Percona は、MySQL 用 Percona Server の開発とメンテナンスを行っています。Percona は MySQL に加えて、長年にわたって多大な労力をかけて MySQL を最適化し、新機能を導入しました。MySQL よりも Percona を使用する主な利点は次のとおりです。
アプリケーションのニーズによって、どのデータベースを選択するかが決まります。データベースごとに、特定のユースケースをターゲットとする独自の機能があるためです。たとえば、アプリケーションで分析が必要な場合は、Percona の clickhouse または MariaDB のカラムストアを使用できますが、MySQL にはそのようなオプションがありません。同様に、コミュニティ バージョンの MySQL では使用できないスレッドプール機能を使用する場合は、Enterprise MySQL か、Percona と MariaDB のオープンソースのスレッドプール機能を選択する必要があります。
クラウド データベースは、パブリック クラウド環境またはハイブリッド クラウド環境で動作するように構築されたデータベースで、組織内のデータを整理、保存、管理できるようになります。クラウド データベースは、マネージドの DBaaS(Database as a Service)として提供されるか、クラウドベースの仮想マシン(VM)にデプロイされ、自社の IT チームに管理されます。マネージド MySQL の主要なクラウド プロバイダは次のとおりです。
Google Cloud は、ユーザーが自己管理する必要がある MySQL の仮想マシン ホスト バージョンと、フルマネージド サービスである Cloud SQL の両方を提供します。
Amazon Web Services(AWS)は、MySQL 用の VM ホスト オプションと RDS 形式のフルマネージド ソリューションを提供します。AWS には、追加機能を備えた MySQL の MySQL 互換製品である Aurora の製品もあります。
Azure は、他のクラウド ベンダーと同様に、MySQL の 2 つのデプロイモデルを提供します。Azure VM 上の MySQL の形式の仮想マシン オプションと、Azure Database for MySQL の形式のフル マネージド バージョンです。
Oracle では、仮想マシンで MySQL をホストできます。また、MySQL HeatWave データベース サービスという新しいフルマネージド サービスも生み出されました。
Digital Ocean は、仮想マシン上で MySQL をホストする機能も備えています。また、MySQL 用のフルマネージド ホスティング オプションも提供されます。
多くの企業が MySQL の拡張に取り組み、MySQL データベースのフェイルオーバーと高可用性を実現するプロダクトを開発してきました。MySQL で直接使用するツールもあれば、MySQL のソースコードを修正して高可用性クラスタや複数の親クラスタを提供する個別のプロダクトを作成するものもあります。一般的な MySQL の HA およびスケーラビリティ ソリューションには、次のようなものがあります。
InnoDB クラスタは、少なくとも 3 つの MySQL Server インスタンスで構成され、高可用性とスケーリング機能を提供します。InnoDB クラスタは、MySQL Shell、MySQL Router、グループ レプリケーションを使用する MySQL サーバーで構成されます。詳しくはこちらをご参照ください。
Percona XtraDB クラスタは、高可用性、並列レプリケーション、スケーラビリティの機能を備えた同期クラスタリング ソリューションです。Percona XtraDB クラスタには ProxySQL 管理ツールが含まれており、ProxySQL を使用して Percona XtraDB クラスタノードを自動的に構成します。詳しくはこちらをご参照ください。
MariaDB Galera クラスタ は、高可用性とスケーラビリティを備えた MariaDB 用の仮想同期型のマルチプライマリ クラスタです。MariaDB サーバーと Galera wsrep プロバイダ ライブラリを利用しています。自動ノード参加、真の並列レプリケーション、マルチプライマリ トポロジなどの機能を提供します。詳しくはこちらをご参照ください。
Tungsten クラスタは、MySQL データベースをクラスタとしてデプロイして管理するために必要なすべてのコア コンポーネントを含む、使いやすい単一のパッケージを提供します。ジオクラスタリング ソリューションを提供します。Tungsten Manager、Replicator、Connector、データノード、ダッシュボードで構成されています。詳しくはこちらをご参照ください。
MariaDB Xpand は、ACID 準拠の分散 SQL、高可用性、フォールト トレランス、書き込みスケーリング、水平方向のスケールアウトをトランザクション ワークロードに提供します。MariaDB Xpand は MariaDB Enterprise のコンポーネントです。これは、1 つ以上の MaxScale ノードと 3 つ以上の Xpand ノードで構成されます。詳しくはこちらをご参照ください。
ScaleArc は、高可用性を実現するデータベース ロード バランシング ソフトウェアです。詳しくはこちらをご参照ください。
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 オペレーターもいくつかあります。しかし、この分野には多くの改善の余地があります。
Cloud SQL for MySQL がイノベーションにどのように役立つかをご覧ください。 ドキュメントを見る