PolarDB for MySQL の Multi-master Cluster (Limitless) は、シングルライター、マルチリーダーアーキテクチャをアップグレードし、複数のプライマリノードを通じて複数のライターとリーダーをサポートします。これは、マルチテナント SaaS、オンラインゲーム、e コマースなどの高同時実行性の読み書きワークロードを対象としています。
次の図は、Multi-master Cluster (Database/Table) Editionのアーキテクチャを示しています。
クラスターエンドポイント経由で接続すると、 PolarProxy は SQL ステートメントを適切なプライマリノードにルーティングします。
コアの利点
書き込みスケールアウト (秒単位)
最大32個の計算ノード上のデータベースへの同時データ書き込みがサポートされています。 データベースのノードの動的フェールオーバーを数秒以内に実装して、クラスターの全体的な同時読み取りおよび書き込み機能を向上させることができます。
複数のマスターバックアップ (読み取り専用ノードなし) 。
プライマリノードに障害が発生した場合、別の低トラフィックのプライマリノードへのフェールオーバーは数秒で実装できます。 ホットスタンバイに追加のアイドルリソースが展開されないため、コストが半分になります。
シナリオ
Multi-master Cluster (Database/Table) Editionは、SaaSのマルチテナント、ゲーム、eコマースなどのシナリオに適しています。 これらのシナリオは、同時実行性の高い読み取りおよび書き込み要求を備えています。
SaaSのマルチテナンシー: テナント間の高い並行性と負荷バランス
シナリオ: テナントのデータベース数が急激に変化し、負荷量が大幅に変化します。 ユーザーは、最適なエクスペリエンスを提供するために、異なるインスタンス間でデータベースリソースをスケジュールする必要があります。
解決策: Multi-master Cluster (Database/Table) Editionは、顧客がテナントのデータベースの異なるプライマリノード間で切り替えたり、新しいプライマリノードを数秒で追加してバーストトラフィックを処理するのに役立ちます。 これは負荷分散を実施する。
グローバルゲームサーバーとeコマースシナリオ: 数分で拡大するビジネスリクエストに対応
シナリオ: ミドルウェアベースまたはビジネスベースのデータベースおよびテーブルシャーディングソリューションがよく使用されます。 バージョンの更新や主要なプロモーションでは、クラスター容量の大幅なスケールアウトが必要です。 迅速なスケールインは、バージョンの更新や主要なプロモーションが終了するときに必要です。 しかし、従来のクラスタのスケーリングは、データ移行のための複雑なステップを伴う。
解決策: Multi-master Cluster (Database/Table) Editionのスケールアウトと透過的なルーティング機能を、ミドルウェアベースまたはビジネスベースのデータベースおよびテーブルシャーディングソリューションとともに使用して、スケールアウト処理を数日から数分に短縮できます。
さまざまなサーバーにデプロイされたゲームアプリケーション: パフォーマンスとスケーラビリティ
シナリオ: ゲームの成長期間中、データベースの負荷は重く、機能は継続的に増加します。 この期間中、データベースの数は増え続けています。 その結果、プライマリノードの負荷も増加する。 ゲームの辞退期間中、データベースの負荷は大幅に削減され、データベースはマージされます。 その結果、プライマリノードの負荷も低減される。
解決策: 成長期間中に、一部のデータベースを新しいプライマリノードに切り替えて、負荷分散を実装できます。 拒否期間中は、データベースをいくつかのプライマリノードに集約して、運用コストを削減できます。
制限事項
-
データベースエンジンは MySQL 8.0 である必要があります。
-
Cluster Edition クラスターを直接 Multi-master Cluster (Limitless) クラスターに変換することはできません。クラスターのエディションをアップグレードするには、「メジャーバージョンアップグレード」をご参照ください。
パフォーマンス向上
テスト後、クラスターのデータベースがより多くのプライマリノードに切り替えられるため、クラスターの全体的な同時読み取りおよび書き込み機能は線形に増加します。 次のコードスニペットは、ストレステストの例を示しています。
テストの背景: クラスターには8つのデータベースと8つのプライマリノードがあります。
テスト手順: テストの開始時に、8つのデータベースが1つのプライマリノードを共有します。 データはすべてのデータベースに同時に同期され、同じストレステストを実行します。 ストレステスト期間中、8つのデータベースがそれぞれ2つのプライマリノード、4つのプライマリノード、8つのプライマリノードにスケジュールされます。 クラスターの全体的なパフォーマンスの変化傾向を表示します。
次の図は、QPSの変化傾向を示しています。

上の図では、データベースがより多くのプライマリノードにスケジュールされているため、クラスターの全体的な同時読み取りおよび書き込み機能が大幅に改善され、線形的に増加しています。
ノード仕様と課金
-
仕様:専用タイプと 汎用タイプの両方をサポートしています。詳細については、「エンタープライズ版のコンピューティングノード仕様」をご参照ください。
-
課金:「課金項目」および「コンピューティングノードの課金ルール」。
使用開始
-
基本設定の構成:データベースアカウントの作成、クラスターのホワイトリストの設定、データベースへの接続。
-
Multi-master Cluster (Limitless) では、各データベースまたはデータオブジェクトは単一のノードを通じて書き込みをルーティングします。データベースを作成する際に、プライマリノードを指定するか、
loose_innodb_mm_default_master_idを 0 に設定してシステムにプライマリノードをランダムに選択させます。 -
SELECTステートメントを使用したデータクエリ。PolarProxy はクエリを自動的に正しいプライマリノードにルーティングします。ノードの指定は不要です。
注意事項。