このトピックでは、読み書き分離ルーティングエンドポイントを使用して接続されているApsaraDB RDS for MySQLインスタンスでヒントを実行する方法について説明します。
制限事項
ヒントは、読み書き分離ルーティングエンドポイントを使用して接続されているRDSインスタンスでのみ実行できます。 詳細については、「読み書き分離の概要」をご参照ください。
Usage
MySQL CLIを使用してRDSインスタンスに接続する場合は、実行するヒントに
-c
オプションを追加する必要があります。 それ以外の場合、MySQL CLIはヒントを除外します。/* FORCE_MASTER */
ヒントを使用して、データがプライマリRDSインスタンスから照会されることを指定できます。/* FORCE_SLAVE */
ヒントを使用して、セカンダリRDSインスタンスからデータを照会するように指定することもできます。説明ヒントは、一貫性やトランザクションの制限の対象にはなりません。 したがって、ヒントは最も高いルート優先度を有する。 ヒントを実行する前に、ヒントがワークロードに適しているかどうかを評価する必要があります。
ヒントには、環境変数の再構成に使用するステートメントを含めることはできません。 たとえば、
/* 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_proxy_internal */set force_node = '<インスタンスID>';
を使用して、指定されたRDSインスタンスのデータを常にクエリできます。 たとえば、/* force_proxy_internal */set force_node = 'rr-bpxxxxx';
を実行すると、それ以降のすべてのコマンドはrr-bpxxxxxという名前のRDSインスタンスにルーティングされます。 RDSインスタンスに障害がある場合、set forceノード 'rr-bpxxxxx' が見つかりません。確認してください。
エラーメッセージが返されます。説明ほとんどの場合、
/* force_proxy_internal */
構文は使用しないことを推奨します。 構文は、後続のすべてのリクエストが指定されたRDSインスタンスに転送されることを指定します。 その結果、読み書き分離機能は無効になる。