このトピックでは、読み書き分離ルーティングエンドポイントを使用して接続されている ApsaraDB RDS for MySQL インスタンスでヒントを実行する方法について説明します。
制限事項
ヒントは、読み書き分離ルーティングエンドポイントを使用して接続されている RDS インスタンスでのみ実行できます。詳細については、「読み書き分離とは」をご参照ください。
使用方法
MySQL CLI を使用して RDS インスタンスに接続する場合、実行するヒントに
-c
オプションを追加する必要があります。そうしないと、MySQL CLI はヒントを除外します。/*FORCE_MASTER*/
ヒントを使用して、プライマリ RDS インスタンスからデータをクエリするように指定できます。また、/*FORCE_SLAVE*/
ヒントを使用して、セカンダリ RDS インスタンスからデータをクエリするように指定することもできます。例:/*FORCE_MASTER*/ SELECT * from <table_name>
.説明ヒントは、整合性またはトランザクションの制限を受けません。したがって、ヒントは最も高いルート優先順位を持ちます。ヒントを実行する前に、ヒントがワークロードに適しているかどうかを評価する必要があります。
ヒントには、環境変数を再構成するために使用される文を含めることはできません。たとえば、
/*FORCE_SLAVE*/ set names utf8;
文は許可されていません。これらの文をヒントに含めると、ワークロードでエラーが発生する可能性があります。読み取り専用 RDS インスタンスの重みを 0 に設定しても、ヒントを使用して読み取り専用 RDS インスタンスにリクエストを強制的に転送すると、クライアントは読み取り専用 RDS インスタンスから切断されます。
/*force_node='<Instance ID>'*/
コマンドを実行して、指定された RDS インスタンスからデータをクエリできます。たとえば、/*force_node='rr-bpxxxxx'*/ show processlist;
を指定すると、SHOW PROCESSLIST
文は rr-bpxxxxx という名前の RDS インスタンスでのみ実行されます。RDS インスタンスに障害が発生した場合、force hint server node is not found, please check.
エラーメッセージが返されます。/*force_proxy_internal*/set force_node = '<Instance ID>';
を使用して、常に指定された RDS インスタンスからデータをクエリできます。たとえば、/*force_proxy_internal*/set force_node = 'rr-bpxxxxx';
を実行した後、後続のすべてのコマンドは rr-bpxxxxx という名前の RDS インスタンスにルーティングされます。RDS インスタンスに障害が発生した場合、set force node 'rr-bpxxxxx' is not found, please check.
エラーメッセージが返されます。説明ほとんどの場合、
/*force_proxy_internal*/
構文を使用しないことをお勧めします。この構文は、後続のすべてのリクエストが指定された RDS インスタンスに転送されることを指定します。その結果、読み書き分離機能は無効になります。