このトピックでは、PolarDB-X インスタンスのエンドポイントと、エンドポイントを構成する方法について説明します。エンドポイントを構成すると、読み書き分離機能を使用できます。
サポートされているバージョン
読み書き分離は、Enterprise Edition の PolarDB-X インスタンスに対してのみ構成できます。
背景情報
プライマリインスタンスに読み取り専用インスタンスを作成しない場合、プライマリインスタンスへの接続に使用できるエンドポイントは 1 つだけです。このエンドポイントは、クラスターエンドポイントと呼ばれます。クラスターエンドポイントは、オンラインビジネスの一般的なシナリオで使用されます。読み取り専用インスタンスが作成されると、読み取り専用インスタンスは [インスタンス一覧] ページに表示されます。読み取り専用インスタンスのインスタンス詳細ページには、読み取り専用インスタンスに接続するための読み取り専用ルートエンドポイントが 1 つ用意されています。読み取り専用ルートエンドポイントは、バッチ処理やオフラインデータのエクスポートなど、リソースへのアクセスが分離されているシナリオで、排他的なリソースを確保します。ハイブリッドトランザクション/分析処理 (HTAP) が実行されるシナリオでプライマリインスタンスと読み取り専用インスタンスを購入した場合、クラスターエンドポイントと読み取り専用ルートエンドポイントを使用できます。クラスターエンドポイントを構成すると、読み書き分離機能を使用できます。
クラスターエンドポイントと読み書き分離を構成する
PolarDB-X コンソール にログインします。
上部のナビゲーションバーで、インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、[PolarDB-X 2.0] タブをクリックします。
管理するインスタンスを見つけ、インスタンス ID をクリックします。
[接続情報] セクションで、[構成管理] をクリックして、クラスターエンドポイントパラメーターを構成します。
次の表に、パラメーターを示します。
パラメーター
説明
リソース構成
読み取り専用インスタンスを購入した場合、プライマリインスタンスのリソースプールに読み取り専用インスタンスを追加して、プライマリインスタンスに送信された読み取りリクエストの負荷を軽減できます。リソースプールに追加されていない読み取り専用インスタンスは、プライマリインスタンスに送信された読み取りリクエストの負荷を軽減するために使用できません。
読み取り専用インスタンスが自動的に追加される
新しく購入した読み取り専用インスタンスをプライマリインスタンスのリソースプールに追加するかどうかを指定します。デフォルトでは、この機能は有効になっています。
インテリジェント読み書き分離
デフォルトでは、この機能は有効になっています。PolarDB-X は、分析処理 (AP) によって生成されたトラフィックを自動的に読み取り専用インスタンスにルーティングし、超並列処理 (MPP) を実行します。これはクエリの高速化に役立ちます。詳細については、「読み書き分離」をご参照ください。
読み取り専用トラフィック (%)
プライマリインスタンスのストレージノードにルーティングする必要がある読み取りクエリは、指定されたパーセンテージに基づいて読み取り専用インスタンスのストレージノードにルーティングされます。このようにして、クエリデータを読み取り専用インスタンスに保存できます。
データ読み取り整合性
強力な整合性: リクエストが読み取り専用インスタンスにルーティングされる場合、読み取りリクエストが実行される前にプライマリインスタンスで更新されたデータをクエリできます。これにより、強力な外部整合性が提供されます。
弱い整合性: リクエストが読み取り専用インスタンスにルーティングされる場合、最新のデータのみを読み取り専用インスタンスから読み取ることができます。プライマリインスタンスと読み取り専用インスタンス間の非同期レプリケーションにより、データの読み取りが遅延します。
説明読み取りレイテンシのため、強力な整合性が必要なデータは、データが更新された後にのみ読み取ることができます。デフォルトでは、データの読み取りに 3 秒かかります。
読み取り専用インスタンスのレイテンシしきい値 (秒)
このしきい値を超えると、読み取り専用リクエストは、読み取りレイテンシがしきい値を超えない他の読み取り専用インスタンスに送信されます。読み取り専用インスタンスの可用性に基づいて、リクエストをプライマリインスタンスに送り返すかどうかを決定することもできます。
プライマリインスタンスに切り替えられた読み取り専用トラフィック
各読み取り専用インスタンスの読み取りレイテンシがしきい値を超えるか、各読み取り専用インスタンスが高可用性 (HA) ステータスにある場合、すべての読み取り専用インスタンスは使用不可と見なされ、システムは読み取り専用リクエストをプライマリインスタンスに送り返すかどうかを決定します。読み取り専用インスタンスの可用性を向上させるために、2 つ以上の読み取り専用インスタンスを使用することをお勧めします。
読み取り専用インスタンスが購入されると、読み取り専用インスタンスはプライマリインスタンスのリソースプールに自動的に追加され、インテリジェント読み書き分離が自動的に有効になります。ただし、[読み取り専用トラフィック (%)] パラメーターを構成しない限り、トランザクション処理 (TP) によって生成された読み取り専用トラフィックは読み取り専用インスタンスにルーティングされません。
強力な整合性が必要なデータを読み取るには、最大 3 秒かかります。
loose_replica_read_timeout
[パラメーター設定] ページで パラメーターの値を変更して、データの読み取りに必要なタイムアウト期間を指定できます。読み書き分離機能を使用するには、PolarDB-X のバージョンが 5.4.13-16415631 以降であることを確認してください。
読み取り専用ルートエンドポイントを構成する
PolarDB-X コンソール にログインします。
上部のナビゲーションバーで、インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、[PolarDB-X 2.0] タブをクリックします。
管理するインスタンスを見つけ、インスタンス ID をクリックします。
[接続情報] セクションで、[構成管理] をクリックして読み取り専用エンドポイントパラメーターを構成します。
説明強力な整合性: 読み取り専用エンドポイントを使用すると、プライマリインスタンスにコミットされた最新のデータをクエリできます。これにより、グローバルデータクエリの整合性が確保されます。プライマリインスタンスと読み取り専用インスタンスの間に大きなデータ同期遅延がある場合、クエリはデータが同期されるまで待機します。
弱い整合性: 読み取り専用エンドポイントを使用すると、現在の読み取り専用インスタンスで使用可能な最新のデータをクエリできます。プライマリインスタンスと読み取り専用インスタンスの間にデータ同期遅延がある場合、クエリは待機せず、使用可能なデータをすぐに返します。
よくある質問
Q: 読み取り専用インスタンスを購入しましたが、インスタンスのデータノードにトラフィックがルーティングされませんでした。どうすればよいですか?
A: 読み取り専用トラフィックは TP によって生成されている可能性があります。読み取り専用インスタンスを購入した後、クラスターエンドポイントを構成するときに [読み取り専用トラフィック (%)] パラメーターを構成します。
Q: 購入した読み取り専用インスタンスの [読み取り専用トラフィック (%)] パラメーターが 0 に設定されていましたが、それでもトラフィックがインスタンスにルーティングされていました。どうすればよいですか?
A: ルーティングされたトラフィックは AP によって生成されている可能性があります。読み取り専用インスタンスを購入すると、インテリジェント読み書き分離が自動的に有効になるため、AP によって生成されたトラフィックがインスタンスにルーティングされます。この問題を解決するには、インテリジェント読み書き分離を無効にします。
Q: 購入した読み取り専用インスタンスの [読み取り専用トラフィック (%)] パラメーターを構成しましたが、インスタンスのデータノードにトラフィックがルーティングされませんでした。なぜですか?
A: トラフィックは、指定された割合で、プライマリインスタンスのリソースプールに追加された読み取り専用インスタンスにルーティングされます。読み取り専用インスタンスがリソースプールから削除されている可能性があります。
Q: PolarDB-X が提供する読み書き分離機能を使用するのではなく、さまざまな接続文字列を設定することで、アプリケーションの読み書き分離を実行できますか。
A: はい、できます。PolarDB-X が提供する読み書き分離機能を使用しない場合は、読み取り専用インスタンスをプライマリインスタンスのリソースプールから削除します。
Q: 強力な整合性のある読み込み機能を有効にする必要がありますか?
A: ビジネスで強力な整合性のある読み込みが必要ない場合は、この機能を無効にして、高いクエリパフォーマンスを実現することをお勧めします。ビジネスの要件に応じてこの機能を有効にすると、特に DDL 文が実行されたときに、プライマリインスタンスと読み取り専用インスタンス間のレプリケーションレイテンシが大きくなる可能性があるため、クエリがタイムアウトする可能性があります。
Q: 強力な整合性のある読み込み機能を無効にするにはどうすればよいですか?
A: アプリケーションがプライマリインスタンスに接続されている場合は、クラスターエンドポイントを構成するときに、[データ読み取り整合性] で [弱い整合性] を選択します。アプリケーションが読み取り専用インスタンスに接続されている場合は、読み取り専用ルートエンドポイントを構成するときに、[データ読み取り整合性] で [弱い整合性] を選択します。
Q: PolarDB-X の読み書き分離を有効にした後、クエリが頻繁にタイムアウトします。どうすればよいですか。
A: タイムアウトエラーは、強力な整合性のある読み込み機能が有効になった後、プライマリインスタンスと読み取り専用インスタンス間のレプリケーションレイテンシが大きいために発生する可能性があります。レイテンシは、次の状況によって発生する可能性があります。
プライマリインスタンスで DDL 文が実行されるか、大量のデータがプライマリインスタンスにインポートされます。
読み取り専用インスタンスの仕様がプライマリインスタンスの仕様よりも大幅に小さい。