このトピックでは、インスタンスの接続エンドポイントとその設定について説明します。これらの設定で、読み書き分離機能を利用できます。
制限事項
読み書き分離は、PolarDB-X の Enterprise Edition インスタンスでのみサポートされます。
背景情報
プライマリインスタンスのみを購入した場合、クラスターエンドポイントと呼ばれる単一の接続エンドポイントが提供されます。このエンドポイントは、主に汎用オンラインビジネスシナリオで使用されます。プライマリインスタンスに読み取り専用インスタンスを追加すると、各読み取り専用インスタンスに対して読み取り専用ルーティングエンドポイントが提供されます。このエンドポイントは、オフラインデータエクスポートやバッチ処理などのリソース分離シナリオ向けに設計されており、読み取り専用リソースの排他的な利用を保証します。プライマリインスタンスと読み取り専用インスタンスの両方を持つ HTAP シナリオでは、クラスターエンドポイントと読み取り専用ルーティングエンドポイントの両方を使用できます。クラスターエンドポイントの設定を構成すると、読み書き分離機能を有効にできます。
クラスターエンドポイントと読み書き分離の設定
にログインします。PolarDB for Xscaleコンソール.
上部のナビゲーションバーで、ターゲットインスタンスが配置されているリージョンを選択します。
On theインスタンスページをクリックし、PolarDB-X 2.0タブをクリックします。
対象インスタンスを見つけ、そのIDをクリックします。
接続情報 セクションで、Configuration Management をクリックして、クラスターエンドポイントの設定を表示します。
パラメータの説明は次の表のとおりです。
パラメータ
説明
リソース設定
プライマリインスタンスのリソースプールに読み取り専用インスタンスを追加して、読み取りトラフィックを分散します。リソースプールに追加されていないインスタンスは、プライマリインスタンスからの読み取りトラフィックを処理しません。
読み取り専用インスタンスの自動追加
新しい読み取り専用インスタンスをプライマリインスタンスのリソースプールに自動的に追加するかどうかを制御します。この機能はデフォルトで有効になっています。
インテリジェント読み書き分離
この機能はデフォルトで有効になっています。AP トラフィックを複数の読み取り専用インスタンスに自動的にルーティングし、超並列処理 (MPP) を使用して高速化します。詳細については、「読み書き分離」をご参照ください。
読み取り専用トラフィックの割合
プライマリインスタンスからの読み取りクエリの指定された割合を、その複数の読み取り専用インスタンスにルーティングします。
読み取り整合性
強い整合性:読み取り専用インスタンスでの読み取りリクエストが、リクエストが開始される前にプライマリインスタンスでコミットされたデータにアクセスすることを保証します。
弱い整合性:読み取り専用インスタンスにルーティングされたリクエストは、そのインスタンスで利用可能な最新のデータにアクセスします。プライマリインスタンスと読み取り専用インスタンス間のレプリケーション遅延により、古いデータが読み取られる可能性があります。
説明レプリケーション遅延が存在する場合、強い整合性の読み取りリクエストは、更新されたデータが利用可能になるまで待機します。デフォルトの待機タイムアウトは 3 秒です。
読み取り専用インスタンスのレイテンシーしきい値
読み取り専用インスタンスのレプリケーション遅延がこのしきい値を超えた場合、その読み取りトラフィックは他の正常な読み取り専用インスタンスに、または利用可能なインスタンスがない場合はプライマリインスタンスにルーティングされます。
読み取り専用トラフィックのプライマリインスタンスへのフェイルオーバー
すべての読み取り専用インスタンスのレプリケーション遅延がしきい値を超えた場合、または HA イベントが発生した場合、すべての読み取り専用インスタンスは利用不可と見なされます。この設定は、それらの読み取りトラフィックをプライマリインスタンスにフェイルオーバーするかどうかを決定します。可用性を向上させるために、2 つ以上の読み取り専用インスタンスを使用することを推奨します。
説明読み取り専用インスタンスを購入すると、自動的にプライマリインスタンスのリソースプールに追加され、インテリジェント読み書き分離がデフォルトで有効になります。ただし、読み取り専用トラフィックの割合に明示的に値を設定するまで、TP 読み取りトラフィックは読み取り専用インスタンスにルーティングされません。
強い整合性の読み取りのデフォルトの待機タイムアウトは 3 秒です。このタイムアウトは、パラメータ設定 ページで
loose_replica_read_timeoutパラメータを変更して調整できます。読み書き分離機能を使用するには、PolarDB-X バージョン 5.4.13-16415631 以降が必要です。
読み取り専用ルーティングエンドポイントの設定
にログインします。PolarDB for Xscaleコンソール.
上部のナビゲーションバーで、ターゲットインスタンスが配置されているリージョンを選択します。
On theインスタンスページをクリックし、PolarDB-X 2.0タブをクリックします。
対象インスタンスを見つけ、そのIDをクリックします。
接続情報 セクションで、Configuration Management をクリックして、読み取り専用ルーティングエンドポイントの設定を表示します。
説明設定:
強い整合性:読み取り専用ルーティングエンドポイント経由で送信されたクエリが、プライマリインスタンスでコミットされた最新のデータにアクセスすることを保証します。レプリケーション遅延が大きい場合、クエリは待機します。
弱い整合性:読み取り専用ルーティングエンドポイント経由で送信されたクエリは、その読み取り専用インスタンスで利用可能な最新のデータにアクセスできます。レプリケーション遅延がある場合、クエリは待機せずに利用可能なデータをすぐに返します。
よくある質問
Q:読み取り専用インスタンスを購入しました。データノード (DN) にトラフィックがないのはなぜですか?
A:読み取りトラフィックが TP 読み取りトラフィックである可能性があります。読み取り専用インスタンスを購入した後、クラスターエンドポイントの設定で読み取り専用トラフィックの割合を設定する必要があります。
Q:読み取り専用インスタンスを購入し、読み取り専用トラフィックの割合を 0 に設定しました。それでもインスタンスがトラフィックを受信しているのはなぜですか?
A:トラフィックは AP トラフィックである可能性が高いです。読み取り専用インスタンスを購入すると、インテリジェント読み書き分離機能がデフォルトで有効になり、AP トラフィックが自動的に読み取り専用インスタンスにルーティングされます。このルーティングを停止するには、インテリジェント読み書き分離を無効にしてください。
Q:読み取り専用インスタンスを購入し、読み取り専用トラフィックの割合を設定しました。データノード (DN) にトラフィックがないのはなぜですか?
A:プライマリインスタンスは、そのリソースプール内の読み取り専用インスタンスにのみトラフィックをルーティングします。読み取り専用インスタンスがリソースプールから削除されている可能性があります。
Q:PolarDB-X の透過的な読み書き分離機能を使用する代わりに、異なる接続文字列を使用してアプリケーションで読み書き分離を実装できますか?
A:はい。 PolarDB-X の読み書き分離機能を使用したくない場合は、プライマリインスタンスのリソースプールから読み取り専用インスタンスを削除できます。
Q:読み取りに強い整合性を有効にすることは必須ですか?
A:アプリケーションで強い整合性の読み取りが必要ない場合は、パフォーマンス向上のためにこの機能を無効にしてください。それ以外の場合は、強い整合性の読み取り機能を有効にする必要があります。この機能を有効にした場合、DDL 操作中などのレプリケーション遅延が大きいと、クエリタイムアウトが発生する可能性があります。
Q:読み取りの強い整合性を無効にするにはどうすればよいですか?
A:アプリケーションがプライマリインスタンスに接続している場合は、クラスターエンドポイントの設定で読み取り整合性を弱い整合性に設定してください。アプリケーションが読み取り専用インスタンスに接続している場合は、読み取り専用ルーティングエンドポイントの設定で弱い整合性を選択してください。
Q:PolarDB-X の読み書き分離機能を使用していると、クエリタイムアウトが頻繁に発生します。どうすればよいですか?
A:強い整合性が有効になっている場合、クエリタイムアウトはレプリケーション遅延が原因である可能性が高いです。この遅延の一般的な原因は次のとおりです:
プライマリインスタンスでの DDL 操作または大規模なデータインポート。
読み取り専用インスタンスの仕様がプライマリインスタンスの仕様よりも大幅に低い。