ビジネス要件に基づいて、データベースプロキシエンドポイントの読み取りおよび書き込み属性を変更できます。 デフォルトの読み取り重み設定を使用しない場合は、設定を変更できます。 このトピックでは、ApsaraDB RDS for PostgreSQLインスタンスのデータベースプロキシエンドポイントの読み取りおよび書き込み属性を変更し、読み取り専用RDSインスタンスの読み取り重み設定を構成する方法について説明します。
前提条件
RDSインスタンスでデータベースプロキシ機能が有効になっています。 詳細については、「データベースプロキシ機能の有効化」をご参照ください。
RDSインスタンスに読み取り専用のRDSインスタンスがあります。 データベースプロキシエンドポイントの読み書き属性を設定して読み書き分離を実装する前に、RDSインスタンス用の読み取り専用RDSインスタンスを作成する必要があります。 詳細については、「読み取り専用ApsaraDB RDS For PostgreSQLインスタンスの作成」をご参照ください。
読み取りおよび書き込み属性
データベースプロキシのIPアドレスホワイトリストは、プライマリRDSインスタンスのIPアドレスホワイトリストと一致しています。 プライマリRDSインスタンスのIPアドレスホワイトリストが更新されると、データベースプロキシのIPアドレスホワイトリストも更新されます。
読み取りおよび書き込み属性は、読み取り /書き込みおよび読み取り専用です。
Read/Write: この属性は、読み書き分離をサポートするために使用されます。 読み書き分割は、データベースシステムのワークロード処理機能を線形にスケーリングするのに役立ちます。
この属性を選択した場合、使用するデータベースプロキシエンドポイントがプライマリRDSインスタンスと少なくとも1つの読み取り専用RDSインスタンスに接続されていることを確認し、データベースプロキシエンドポイントはすべての書き込みリクエストをプライマリRDSインスタンスに転送します。 データベースプロキシエンドポイントは、以前はプロキシ端末と呼ばれていました。
読み取り専用: この属性は、レポートクエリなどの読み取り専用リクエストを処理するために使用されます。
この属性を選択した場合、使用するデータベースプロキシエンドポイントが少なくとも1つの読み取り専用RDSインスタンスに接続されていること、およびデータベースプロキシエンドポイントがプライマリRDSインスタンスにリクエストを転送しないことを確認します。
データベースプロキシエンドポイントに [読み取り専用] 属性を選択した場合、システムは、データベースプロキシエンドポイントに接続されている読み取り専用RDSインスタンスに新しい接続を順番に分散します。 この場合、各クライアント接続は1つの読み取り専用RDSインスタンスに分散され、プライマリRDSインスタンスは関与しません。 使用可能な接続の総数は、データベースプロキシエンドポイントに接続されているすべての読み取り専用RDSインスタンスへの接続の合計です。
読み取りおよび書き込み属性に基づく処理ロジック
読み取りおよび書き込み属性 | 読み取り重みを指定するメソッド | プライマリRDSインスタンスの重み | 通常のケース | 最後の読み取り専用RDSインスタンスの削除後 | すべての読み取り専用RDSインスタンスに障害が発生した場合 |
読み取り専用 | 自動またはカスタム | プライマリRDSインスタンスに読み取り重みを指定することはできません。 |
|
|
|
読み書き権限 | 自動 | 0に等しい重み 詳細については、「システムによる読み取り重み割り当てのルール」をご参照ください。 |
|
|
|
Custom | 0より大きい重み |
|
|
| |
0に等しい重み |
|
|
|
リクエスト転送なし: プライマリRDSインスタンスが読み取り専用リクエスト転送に関与していないことを示します。
接続エラー: 読み取り専用属性を持つデータベースプロキシエンドポイントの接続設定で読み取りおよび書き込み要求を処理できない場合、エラーが報告されることを示します。
読み取り /書き込みモードで、プライマリRDSインスタンスの重みが0に設定されている場合、読み取りリクエストはプライマリRDSインスタンスに転送されません。 プライマリRDSインスタンスの読み取り専用RDSインスタンスに障害がある場合、強制的なヒントが指定されている場合、またはトランザクション分割が有効になっている場合、読み取り要求はプライマリRDSインスタンスに転送されます。
手順
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションペインで、[データベース] をクリックします。
[接続情報] セクションで、変更するデータベースプロキシエンドポイントを [プロキシエンドポイント (ターミナル) ID] 列で見つけ、[操作] 列の [設定の変更] をクリックします。
表示されるダイアログボックスで、[読み取り /書き込み属性] を [読み取り /書き込み (読み取り /書き込み分割)] または [読み取り専用] (プライマリインスタンスが書き込みリクエストの受信に接続されていません) に設定します。
[読み取り重み割り当て] を [自動] または [カスタム] に設定します。
自動: システムは、RDSインスタンスの仕様に基づいて、データベースシステム内の各RDSインスタンスに読み取り重みを自動的に割り当てます。 読み取り専用RDSインスタンスを作成すると、読み取り専用RDSインスタンスに読み取り重みが自動的に割り当てられ、読み取り専用RDSインスタンスが読み書き分離リンクに追加されます。 読み取り専用RDSインスタンスの読み取り重みを手動で指定する必要はありません。 詳細については、「デフォルトの読み取り重み」をご参照ください。
カスタム: 各読み取り専用RDSインスタンスの読み取り重みを指定する必要があります。 有効な値: 0 ~ 10000 読み取り専用RDSインスタンスを作成すると、読み取り専用RDSインスタンスの読み取り重みが0に設定されます。 新しい読み取り専用RDSインスタンスの読み取り重みを変更する必要があります。
説明より高い読み取り重みは、処理される必要があるより多くの読み取り要求を示す。 たとえば、プライマリRDSインスタンスに読み取り重みが100、200、200の3つの読み取り専用RDSインスタンスがあり、プライマリRDSインスタンスの読み取り重みが0の場合、プライマリRDSインスタンスは書き込みリクエストのみを処理し、読み取り専用RDSインスタンスは
1:2:2
の比率で読み取りリクエストを処理します。このパラメーターを再設定すると、新しい読み取り重みがすぐに有効になり、一時的な接続は発生しません。 既存の接続も有効なままです。 新しい接続を介して送信されたリクエストのみが、新しい重みに基づいて転送されます。
読み取り専用RDSインスタンスがリリースされると、読み取り重みは自動的に無効になります。
RDSインスタンスに障害が発生するか、データレプリケーションの遅延が指定されたしきい値を超えると、読み取り重みは自動的に無効になります。 RDSインスタンスが期待どおりに実行されると、読み取り重みが再び有効になります。
読み取り要求のSQL文に
/* FORCE_MASTER */
を追加できます。 これにより、リクエストはプライマリRDSインスタンスに転送されます。 読み取りリクエストを読み取り専用インスタンスに転送する場合は、リクエストのSQL文に/* FORCE_SLAVE */
を追加できます。例:
/*FORCE_MASTER*/ SELECT * FROM table_name;
関連する API
API 操作 | 説明 |
データベースプロキシの詳細を照会します。 | |
データベースプロキシのデータベースプロキシエンドポイントの詳細を照会します。 | |
データベースプロキシエンドポイントの読み取りおよび書き込み属性と読み取り重みを変更します。 |