このドキュメントでは、Multi-master Cluster (Limitless) Edition をご利用の際に発生する可能性のある問題とその解決方法について説明します。
マルチマスタークラスター (無制限) エディションに読み取り/書き込みノードを追加するにはどうすればよいですか?
新しいマルチマスタークラスター(リミットレス)エディションには、読み取り/書き込みノードが 2 つだけ含まれています。クラスター作成後、さらに読み取り/書き込みノードを追加できます。詳細については、「ノードの追加または削除」をご参照ください。
ワークロードが低いにもかかわらず、RW ノードへの接続数が多い理由
クラスターエンドポイントを使用して Multi-master Cluster (Limitless) Edition に接続すると、データベースプロキシが各 RW ノードに接続します。そのため、すべての RW ノードで接続数が同じになります。スレッドプール機能を有効にすることで、多数の接続がデータベースリソースを過剰に消費するのを防げます。
使用を開始した後 Multi-master Cluster (Limitless) エディションでは、任意の読み取り/書き込みノードで単一のデータベースまたはオブジェクトのデータにアクセスできますか?
いいえ、できません。単一のデータベースまたはデータオブジェクト内のデータには、一度に 1 つのノードからのみアクセス可能です。ただし、必要に応じてエンドポイントを動的に切り替えるコマンドを使用できます。
データベースレベルの隔離とオブジェクトレベルの隔離の使い分け
サービスがデータベースまたはスキーマ単位で隔離されており、クロスデータベースクエリや更新が少ない場合は、データベースレベルの隔離を使用できます。これはデフォルトの方法であり、エンドポイントの切り替え時に管理が簡素化されます。一方、サービスが少数のデータベースのみを使用し、テーブルレベルで機能が隔離されている場合は、オブジェクトレベルの隔離を使用できます。この方法ではアプリケーションへの変更が最小限で済み、柔軟な管理が可能です。ただし、データベース内の各オブジェクトを手動で切り替える必要があるため、エンドポイントの切り替えが複雑になります。
アプリケーションコードの変更は、Multi-master Cluster (Limitless) Editionの使用に必要ですか?
いいえ、その必要はありません。Multi-master Cluster (Limitless) Edition はバックエンド に複数の読み取り/書き込みノードを持ちますが、アプリケーション は特定の データベース または データオブジェクト の エンドポイント をどの ノード がホストしているかを知る必要はありません。プロキシレイヤー がリクエスト を正しい ノード に自動的に転送します。
エンドポイントが異なるノード上にある 2 つのデータベースまたはデータオブジェクトを単一トランザクション内で変更できるか
いいえ、できません。単一トランザクション内で変更されるすべてのデータベースまたはデータオブジェクトは、同一ノード上に存在している必要があります。
ソリューション:異なるノード間で関連する変更を実行する代わりに、マルチマスターシャードテーブル を使用できます。マルチマスターシャードテーブルは、シャーディングルールに基づいてデータを複数のシャードデータベースに自動分散します。これにより、各ノードでの読み書き操作が可能になり、分散処理機能を提供します。
エンドポイントが異なるノード上にある 2 つのデータベースまたはデータオブジェクトに対してクロスノードクエリを実行できるか
はい、実行できます。グローバル読み取り専用ノード を購入できます。グローバル読み取り専用ノード を使用すると、エンドポイントをまたいだクエリを実行できます。
エンドポイントを切り替える ALTER 文がすぐに返却されない理由
主に次の 2 つの理由が考えられます。第一に、データベースエンドポイントを切り替える際にデータベース内に多くのオブジェクトが含まれている場合、切り替えに時間がかかることがあります。第二に、切り替え中にデータベースまたはデータオブジェクトに対するデータ操作言語(DML)の負荷、特に書き込み負荷が高い場合も、処理が遅延します。この問題を回避するには、オフピーク時間帯にエンドポイントを切り替えてください。
メタデータの表示方法
information_schema データベース内のテーブルを使用して引き続きメタデータを確認できます。ただし、クラスター全体の情報を含むテーブルと、SQL 文を実行する特定のノードの情報を含むテーブルを区別する必要があります。たとえば、information_schema.tables テーブルにはクラスター全体の情報が含まれますが、information_schema.innodb_tables テーブルには単一ノードの情報が含まれます。
ホットスタンバイストレージノードの追加方法
コンソールからホットスタンバイストレージノードを購入できます。デフォルトでは、ホットスタンバイストレージノードは他のノードとは異なるゾーンに配置され、独立したコンピュートおよびストレージリソースを備えています。
Multi-master Cluster (Limitless) Edition には多くの書き込みノードがあります。ダウンストリームアプリケーションの binlog をどのようにサブスクライブできますか?
クラスターの binlog を有効にできます。その後、ダウンストリームアプリケーションはクラスターエンドポイントを使用して直接サブスクライブできます。Multi-master Cluster (Limitless) Edition は自動的にログをソートし、ダウンストリームアプリケーション向けに一貫性のある単一の binlog ストリームを提供します。
読み書きノードを削除する前に必要な操作
読み取り/書き込みノードを削除する前に、そのノード上のすべてのデータベースのエンドポイントを、他の利用可能な読み取り/書き込みノードに移行する必要があります。これは必須のステップです。そうしないと、これらのデータベースはアクセスできなくなります。詳細については、「ノードの削除」をご参照ください。データベースの移行が完了した後にのみ、ノードを削除できます。
Multi-master Cluster (Limitless) Edition には、最低でも 2 台の読み書きノードが必要です。そのため、クラスターに読み書きノードが 2 台しかない場合は、読み書きノードを削除できません。
誤って読み書きノードを削除してしまい、データベースにアクセスできなくなった場合の復旧方法
データベースエンドポイントを移行せずに読み書きノードを削除すると、関連するデータベースにアクセスできなくなる可能性があります。アクセスを復旧するには、次の SQL 文を実行して、これらのデータベースに新しい読み書きノードを割り当てます。
ALTER DATABASE <name> POLARDB_WRITE_NODE <new_master_id>;このコマンドにより、アクセス不能になったデータベースのエンドポイントがアクティブな読み書きノードに再割り当てされ、アクセスが復旧します。詳細については、「手順」をご参照ください。