データベースプロキシエンドポイントの接続設定を構成することで、プライマリインスタンスと読み取り専用インスタンス間での読み取り/書き込みトラフィックのルーティング方法を制御します。各エンドポイントは、読み書き分離や同時実行性の高い読み取りワークロードなどのシナリオに合わせて個別に調整できます。
前提条件
開始する前に、以下を確認してください。
-
データベースプロキシ機能が有効化されていること。詳細については、「データベースプロキシ機能の有効化」をご参照ください。
-
RDS インスタンスに少なくとも 1 つの読み取り専用インスタンスがアタッチされていること。読み取り専用インスタンスがなくてもデータベースプロキシを有効にできますが、読み取り専用インスタンスが作成されるまでエンドポイントの接続設定を構成することはできません。詳細については、「ApsaraDB RDS for PostgreSQL の読み取り専用インスタンスの作成」をご参照ください。
接続設定の構成
-
「インスタンス」ページに移動します。上部メニューで、RDS インスタンスがあるリージョンを選択し、インスタンス ID をクリックします。
-
左側メニューで、[データベースプロキシ] をクリックします。
-
[接続情報] セクションで、[プロキシエンドポイント (ターミナル) ID] 列で変更するエンドポイントを見つけ、[操作] 列の [設定の変更] をクリックします。
-
表示されたダイアログボックスで、必要に応じて接続設定を更新します。
パラメーター 説明 [接続の説明] エンドポイントのカスタムの説明です。最大 30 文字です。 [読み取り/書き込み属性] このエンドポイントがアクセスできるインスタンスタイプを制御します。ガイダンスについては、「読み取り/書き込み属性の選択」をご参照ください。 [レイテンシーしきい値] プライマリ RDS インスタンスから読み取り専用 RDS インスタンスへのデータレプリケーションで許容される最大レイテンシー (秒) です。このしきい値を超えると、プロキシは読み取り専用インスタンスへの読み取りの転送を停止します。有効な値:0~3600。30 以上に設定してください。[読み取り/書き込み属性]が [読み取り/書き込み (読み書き分離)] に設定されている場合にのみ使用できます。 [トランザクション分離] [有効] に固定されています。トランザクション内の書き込み操作の前に発生する読み取りリクエストを読み取り専用インスタンスに転送し、プライマリインスタンスの負荷を軽減します。無効にすることはできません。 [読み取り重み割り当て] 読み取りトラフィックの分散方法を決定します。詳細については、「読み取り重み割り当ての設定」をご参照ください。 -
[OK] をクリックします。
読み取り/書き込み属性の選択
この表を参考に、ワークロードに適したモードを選択してください。
| シナリオ | 推奨オプション | 理由 |
|---|---|---|
| 一般的なアプリケーショントラフィック、OLTP、ETL ジョブ | [読み取り/書き込み (読み書き分離)] | エンドポイントはプライマリインスタンスとすべての読み取り専用インスタンスに接続し、読み取りリクエストと書き込みリクエストの両方を受け付けます。これはデフォルト値です。 |
| レポートクエリ、分析、読み取り集中型ワークロード | [読み取り専用 (書き込みリクエストを受信するためにプライマリインスタンスは接続されません)] | エンドポイントは読み取り専用インスタンスにのみ接続し、書き込みリクエストを拒否するため、分析の負荷をプライマリインスタンスから分離します。 |
[読み取り/書き込み属性]への変更は、新しい接続にのみ適用されます。既存の接続は影響を受けません。
読み取り重み割り当ての設定
[自動] — プロキシはインスタンスの仕様に基づいて読み取り重みを割り当てます。新しい読み取り専用インスタンスは、手動での設定を必要とせずに、読み書き分離の対象に自動的に追加されます。デフォルトの重み値については、「デフォルトの読み取り重み」をご参照ください。
[カスタム] — 各読み取り専用インスタンスの読み取り重みを指定します。有効な値:0~10000。新しい読み取り専用インスタンスのデフォルトの重みは 0 であり、手動で更新する必要があります。
重みが大きいほど、そのインスタンスに送信される読み取りリクエストの数が多くなります。たとえば、プライマリインスタンスの読み取り重みが 0 で、3 つの読み取り専用インスタンスの重みがそれぞれ 100、200、200 の場合、プライマリインスタンスは書き込みリクエストのみを処理し、読み取りリクエストは 1:2:2 の比率で分散されます。
設定された重みに関係なく、特定のリクエストを特定のインスタンスタイプに強制的に送信するには、SQL ヒントを追加します:
-
プライマリインスタンスへのルーティング:
/*FORCE_MASTER*/ SELECT * FROM table_name; -
読み取り専用インスタンスへのルーティング:
/*FORCE_SLAVE*/ SELECT * FROM table_name;
変更が有効になるタイミング
| パラメーター | 新しい接続 | 既存の接続 |
|---|---|---|
| [読み取り/書き込み属性] | すぐに有効になります | 影響を受けません。既存の接続は以前の設定を保持します |
| [読み取り重み割り当て] | すぐに有効になります。一時的な接続切断は発生しません | 再接続されるまで以前の重みを使用し続けます |
読み取り専用 RDS インスタンスが削除されると、読み取り重みは自動的に無効になります。
RDS インスタンスに障害が発生した場合、またはデータレプリケーションのレイテンシーが指定されたしきい値を超えた場合、読み取り重みは自動的に無効になります。RDS インスタンスが正常に動作すると、読み取り重みは再び有効になります。
次のステップ
API リファレンス
| 操作 | 説明 |
|---|---|
| DescribeDBProxy | データベースプロキシの詳細を照会します。 |
| DescribeDBProxyEndpoint | データベースプロキシのエンドポイントを照会します。 |
| ModifyDBProxyEndpoint | データベースプロキシエンドポイントの接続設定を変更します。 |