目次
データは、今日の Web、モバイル、ソーシャル、エンタープライズ、およびクラウドアプリケーションの通貨です。データが常に利用できることを確保することは、いずれの組織でも一番の優先事項です。分単位のダウンタイムでも、収益と評価が大きく損なわれる可能性があります。
高可用性 (HA) を実現するための「万能な」方法はありません。固有のアプリケーション属性、ビジネス要件、運用性能、およびレガシーインフラストラクチャーはすべて、HA テクノロジーの選択に影響を与える可能性があります。そして、HA を実現する上でテクノロジーは 1 つの要素でしかありません。テクノロジー自身と同じくらい人とプロセスが重要です。
MySQL は可用性と拡張性を求める多くのアプリケーションに配備されています。可用性とは、ホストでの障害 (MySQL、オペレーティングシステム、ハードウェア、保守作業での障害を含む、対処しないとダウンタイムが発生する可能性がある) に対処し、必要に応じてリカバリさせる能力のことです。拡張性とは、データベース、およびアプリケーションクエリーの負荷の両方を複数の MySQL サーバーに分散させる能力のことです。
アプリケーションごとに運用および可用性要件が異なるため、MySQL は認定およびサポートされるソリューションを幅広く提供し、サービスレベル要件を満たす適切なレベルの高可用性 (HA) と拡張性を実現しています。このようなソリューションは、レプリケーションから、仮想化、地理的冗長性、99.999% の稼働時間を実現するマルチデータセンターソリューションまで用意しています。
アプリケーションのために最適な高可用性ソリューションを選択することは、主に次のことに依存します。
必要な可用性レベル。
配備されるアプリケーションのタイプ。
独自の環境で受け入れられるベストプラクティス。
MySQL がサポートするプライマリソリューションは次のとおりです。
MySQL レプリケーション。詳細: 第17章「レプリケーション」。
MySQL Cluster。詳細: 第18章「MySQL Cluster NDB 7.3 および MySQL Cluster NDB 7.4」。
Oracle VM Template for MySQL。詳細: セクション16.1「Oracle VM Template for MySQL Enterprise」。
DRBD、Corosync、Pacemaker を実装する MySQL。詳細: セクション16.2「DRBD/Pacemaker/Corosync/Oracle Linux を使用した MySQL の概要」。
Windows Failover Clustering を実装する MySQL。詳細: セクション16.3「Windows フェイルオーバークラスタリングを使用した MySQL の概要」。
Solaris Cluster を実装する MySQL。Solaris Cluster の理解を深めてください。
追加オプションをサードパーティーソリューションで利用できます。
高可用性データベースサービスの実現に使用される各アーキテクチャーは、それが提供する稼働時間のレベルによって区別されます。これらのアーキテクチャーは、次の 3 つの主なカテゴリにグループ分けできます。
データレプリケーション。
クラスター化および仮想化システム。
シェアードナッシング、地理的にレプリケートされたクラスタ。
次の図で示すように、これらの各アーキテクチャーは段階的に稼働時間レベルが高くなるため、それらによってコストと複雑さのレベルが潜在的に大きくなる可能性があり、これらのバランスを取る必要があります。単に高可用性アーキテクチャーを配備するだけでは、実際に HA が実現されることの保証にはなりません。実際、シェアードナッシングクラスタの実装と保守が不十分であると、単純なデータレプリケーションソリューションよりも、可用性レベルがあっさりと低下する可能性があります。
次の表では、さまざまな MySQL ソリューションの HA および拡張性機能を比較しています。
表 16.1 MySQL HA ソリューションの機能比較
要件 | MySQL レプリケーション | DRBD | Oracle VM テンプレート | MySQL Cluster |
---|---|---|---|---|
可用性 | ||||
プラットフォームサポート | MySQL Server がサポートするすべて (https://www.mysql.com/support/supportedplatforms/database.html) | Linux | Oracle Linux | MySQL Cluster がサポートするすべて (https://www.mysql.com/support/supportedplatforms/cluster.html) |
IP フェイルオーバーの自動化 | いいえ | はい | はい | コネクタおよび構成に依存 |
データベースフェイルオーバーの自動化 | いいえ | はい | はい | はい |
データ再同期の自動化 | いいえ | はい | N/A - 共有ストレージ | はい |
代表的なフェイルオーバー時間 | ユーザー/スクリプトに依存 | 構成に依存、60 秒以上 | 構成に依存、60 秒以上 | 1 秒以下 |
同期レプリケーション | いいえ、非同期および準同期 | はい | N/A - 共有ストレージ | はい |
共有ストレージ | いいえ、分散型 | いいえ、分散型 | はい | いいえ、分散型 |
地理的冗長性のサポート | はい | はい、MySQL レプリケーション | はい、MySQL レプリケーション | はい、MySQL レプリケーション |
更新スキーマオンライン | いいえ | いいえ | いいえ | はい |
拡張性 | ||||
ノード数 | 1 つのマスター、複数のスレーブ | 1 つのアクティブ (プライマリ) ノード、1 つのパッシブ (セカンダリ) ノード | 1 つのアクティブ (プライマリ) ノード、1 つのパッシブ (セカンダリ) ノード | 255 |
組み込みロードバランス | 読み取り、MySQL レプリケーション経由 | 読み取り、MySQL レプリケーション経由 | 読み取り、MySQL レプリケーション経由およびフェイルオーバー中 | はい、読み取りおよび書き込み |
読み取りの多いワークロードをサポート対応 | はい | はい | はい | はい |
書き込みの多いワークロードをサポート対応 | はい、アプリケーションレベルシャーディングで | はい、アプリケーションレベルシャーディング - 複数のアクティブ/パッシブペアで | はい、アプリケーションレベルシャーディング - 複数のアクティブ/パッシブペアで | はい、自動シャーディングで |
スケールオンライン (ノードの追加、再パーティション化など) | いいえ | いいえ | いいえ | はい |