すべてのプロダクト
Search
ドキュメントセンター

PolarDB:アーキテクチャ

最終更新日:May 28, 2024

このトピックでは、グローバルデータベースネットワーク (GDN) のアーキテクチャについて説明し

図 1. GDNアーキテクチャ 1

クロスリージョンデプロイ

  • GDNは、1つのプライマリクラスタと1つ以上のセカンダリクラスタで構成されます。 データは、GDN内のクラスタ間で同期される。

    説明

    デフォルトでは、GDNには1つのプライマリクラスターと最大4つのセカンダリクラスターが含まれます。 セカンダリクラスターを追加するには、[クォータセンター] に移動します。 GDNクラスター上限調整に対応する [操作] 列の [適用] をクリックします。

  • デフォルトでは、GDN内の各クラスターには2つのノードが含まれます。 クラスターには最大16ノードを追加できます。 ノードの追加方法については、「読み取り専用ノードの追加または削除」トピックの「読み取り専用ノードの追加」をご参照ください。

リージョン間の低レイテンシ同期

GDNは、非同期的な方法で領域間でデータを複製する。 物理ロギングや並列処理などのテクノロジーを使用することで、GDNはプライマリクラスターとセカンダリクラスター間のクロスリージョンレプリケーションの待ち時間を短縮できます。 GDNでは、データは2秒以内の待ち時間ですべてのクラスターにわたって同期されます。 これにより、地理的に分散したリージョンからデータにアクセスするアプリケーションの読み取りレイテンシが大幅に削減されます。 データ同期のためにリモートリージョンに確立されたセカンダリクラスタは、プライマリクラスタの安定性やパフォーマンスに悪影響を与えません。

クロスリージョン読み取り /書き込み分割

  • 特徴

    • ほとんどの場合、読み取り要求は現在のリージョンのセカンダリクラスタに転送され、書き込み要求はプライマリクラスタに転送されます。

      説明

      セカンダリクラスタのプライマリノードは、主にプライマリクラスタからデータを非同期にレプリケートするために使用されます。 デフォルトでは、リージョン間の物理レプリケーションのレイテンシを短縮するために、読み取り要求は同じリージョン内のセカンダリクラスターの読み取り専用ノードに送信されます。

    • 読み書き分離を有効にするためにアプリケーションコードを変更する必要はありません。

  • 実装方法

    GDNのクロスリージョン読み書き分離機能は、PolarDBクラスターのクラスターエンドポイントに基づいて実装する必要があります。 GDNのクラスターエンドポイントを管理する方法については、「GDNへの接続」をご参照ください。

  • リクエストの転送ロジック

    宛先ノード

    転送されたリクエスト

    プライマリノードのみ

    • INSERT、UPDATE、DELETE、SELECT FOR UPDATEなどのDML操作を実行するために送信されるリクエスト。

    • データベースまたはテーブルの作成、データベースまたはテーブルの削除、テーブルスキーマまたはアクセス許可の変更など、DDL操作を実行するために送信されるリクエスト。

    • トランザクションにカプセル化されたリクエスト。

    • ユーザー定義関数を呼び出すために使用されるリクエスト。

    • ストアドプロシージャの実行に使用されるリクエスト。

    • executeステートメントの実行に使用されるリクエスト。

    • 複数ステートメントクエリの実行に使用されるリクエスト。 詳細については、「マルチステートメント」をご参照ください。

    • 一時テーブルを含むリクエスト。

    • SELECT last_insert_id() ステートメントの実行に使用されるリクエスト。

    • ユーザー変数の照会または再構成に使用されるリクエスト。

    • SHOW PROCESSLISTステートメントの実行に使用されるリクエスト。

    • SQLでKILLステートメントを実行するために使用されるリクエスト。 これらのステートメントは、LinuxのKILLコマンドとは異なります。

    プライマリノードまたは読み取り専用ノード

    説明

    リクエストがプライマリノードに送信されるのは、プライマリノードによる読み取りリクエストの許可 パラメーターを [はい] に設定した場合のみです。

    • トランザクションにカプセル化されていない読み取り要求。

    • COM_STMT_EXECUTEステートメントの実行に使用されるリクエスト。

    すべてのノード

    • システム変数の変更に使用されるリクエスト。

    • USEステートメントの実行に使用されるリクエスト。

    • COM_STMT_PREPAREステートメントの実行に使用されるリクエスト。

    • COM_CHANGE_USER、COM_QUIT、およびCOM_SET_OPTIONステートメントの実行に使用されるリクエスト。

    説明

    セカンダリクラスタのプライマリノードは、主にプライマリクラスタからのデータを非同期にレプリケートするために使用され、読み取りおよび書き込み要求を処理しません。 したがって、テーブルのプライマリノードはプライマリクラスタのプライマリノードを参照し、読み取り専用ノードはセカンダリクラスタの読み取り専用ノードを参照します。

参考資料