DB エンジンによると、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 という会社は、Percona Server for MySQL の開発とメンテナンスを行っています。Percona は、MySQL 上で長年にわたって膨大な量の作業を行い、MySQL の最適化と新機能の導入を行いました。MySQL ではなく Percona を使用する主なメリットは次のとおりです。
アプリケーションのニーズによって、どのデータベースを選択するかが決まります。データベースごとに、特定のユースケースをターゲットとする独自の機能があるためです。たとえば、アプリケーションで分析が必要な場合は、Percona の clickhouse または MariaDB のカラムストアを使用できますが、MySQL にはそのようなオプションがありません。同様に、コミュニティ バージョンの MySQL では使用できないスレッドプール機能を使用する場合は、Enterprise MySQL か、Percona と MariaDB のオープンソースのスレッドプール機能を選択する必要があります。
クラウド データベースは、パブリック クラウド環境またはハイブリッド クラウド環境で動作するように構築されたデータベースで、組織内のデータを整理、保存、管理できるようになります。クラウド データベースは、マネージドの DBaaS(Database as a Service)として提供されるか、クラウドベースの仮想マシン(VM)にデプロイされ、自社の IT チームに管理されます。マネージド MySQL の主要なクラウド プロバイダは次のとおりです。
Google Cloud
Google Cloud は、ユーザーが自己管理する必要がある MySQL の仮想マシン ホスト バージョンと、フルマネージド サービスである Cloud SQL の両方を提供します。
アマゾン ウェブ サービス(AWS)
Amazon Web Services(AWS)は、MySQL 用の VM ホスト オプションと RDS 形式のフルマネージド ソリューションを提供します。AWS には、追加機能を備えた MySQL の MySQL 互換製品である Aurora の製品もあります。
Azure SQL Database
Azure は、他のクラウド ベンダーと同様に、MySQL の 2 つのデプロイモデルを提供します。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 Server インスタンスで構成され、高可用性とスケーリング機能を提供します。InnoDB クラスタは、MySQL Shell、MySQL Router、グループ レプリケーションを備えた MySQL サーバーで構成されます。詳しくは、第 23 章 の InnoDB クラスタをご覧ください。
Percona XtraDB クラスタは、高可用性、並列レプリケーション、スケーラビリティを提供する同期クラスタリング ソリューションです。Percona XtraDB クラスタには、ProxySQL を使用して Percona XtraDB クラスタノードを自動的に構成する ProxySQL 管理ツールが含まれています。詳細については、Percona XtraDB クラスタをご覧ください。
MariaDB Galera クラスタ は、高可用性とスケーラビリティを備えた MariaDB 用の仮想同期型のマルチプライマリ クラスタです。MariaDB サーバーと Galera wsrep プロバイダ ライブラリを使用しています。自動ノード参加、真の並列レプリケーション、マルチプライマリ トポロジなどの機能を備えています。詳細については、MariaDB Galera Cluster をご覧ください。
Tungsten Cluster は、MySQL データベースをクラスタとしてデプロイおよび管理するために必要なすべてのコア コンポーネントを含む、単一の簡単なパッケージを提供します。ジオ クラスタリング ソリューションを提供します。Tungsten Manager、Replicator、コネクタ、データノード、ダッシュボードで構成されています。詳しくは、継続的なタングステン クラスターをご覧ください。
MariaDB Xpand は、ACID 準拠の分散 SQL、高可用性、フォールト トレランス、書き込みスケーリング、水平スケールアウトをトランザクション ワークロードに提供します。MariaDB Xpand は、MariaDB Enterprise のコンポーネントです。1 つ以上の 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 オペレーターもいくつかあります。しかし、この分野には多くの改善の余地があります。
Cloud SQL for MySQL がイノベーションにどのように役立つかをご覧ください。 ドキュメントを見る