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

PolarDB:グローバルデータベースネットワークへの接続

最終更新日:Sep 30, 2025

グローバルデータベースネットワーク (GDN) では、各クラスター (プライマリクラスターとセカンダリクラスターの両方) に独立したクラスターエンドポイントが提供されます。アプリケーションは、地理的なリージョンに基づいて最寄りのクラスターエンドポイントに接続することで、GDN に接続できます。GDN は自動的に読み書き分離を処理します。書き込みリクエストはプライマリクラスターに転送され、読み取りリクエストは通常ローカルで処理されます。

読み書き分離とリクエストルーティング

GDN では、プライマリクラスターとセカンダリクラスターへの読み取りおよび書き込みリクエストのルーティングは、各クラスターの PolarProxy の設定 によって決定されます。アプリケーションコードを変更する必要はありません。クラスターのエンドポイントに接続すると、読み取りおよび書き込みリクエストは次のように自動的にルーティングされます。

  • INSERTUPDATEDELETE などの書き込みリクエスト、およびトランザクション内のすべてのリクエストは、処理のためにプライマリクラスターのプライマリノードに自動的に転送されます。

  • 読み取りリクエストは、デフォルトでローカルのセカンダリクラスターの読み取り専用ノードにルーティングされ、低遅延のローカルアクセスが実現します。セッションの一貫性が有効になっている場合、データ整合性を確保するために、一部の読み取りリクエストがプライマリクラスターのプライマリノードにルーティングされることもあります。

詳細な転送ロジックを表示するにはクリックします

ターゲットノード

転送されるリクエスト

プライマリクラスターのプライマリノードにのみ送信

  • DML 操作 (INSERTUPDATEDELETE など)

  • DDL 操作 (テーブルやデータベースの作成または削除、テーブルスキーマの変更など)

  • SHOW コマンド

  • BEGINCOMMIT などのトランザクション関連コマンド

  • LISTENUNLISTENNOTIFY コマンド

  • ANALYZE コマンド

  • 2 フェーズコミットプロトコルコマンド

  • トランザクション内のリクエスト (動作はトランザクション分割の構成によって異なる場合があります)

  • 関数の定義と呼び出し (動作はユーザー定義関数のルーティングルールの構成によって異なる場合があります)

  • 一時テーブルを使用するリクエスト

  • 複数文の Multi Statements リクエスト

  • 書き込みリクエストを含む PREPARE

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

  • トランザクション外の読み取りリクエスト

  • EXPLAIN コマンド

  • 読み取りリクエストを含む PREPARE

常にすべてのノードに送信

  • USE コマンド

  • DISCARD および DEALLOCATE コマンド

説明
  • [読み書きモード][読み書き (読み書き分離の自動化)] に設定されているクラスターエンドポイントまたはカスタムエンドポイントのみが、GDN の読み書き分離サービスをサポートします。

  • [プライマリエンドポイント] および [読み書きモード][読み取り専用] に設定されているカスタムエンドポイントは、GDN の読み書き分離サービスをサポートしません。

  • プライマリクラスターとセカンダリクラスター間のレプリケーションの遅延がビジネスに与える潜在的な影響を軽減するために、セカンダリクラスターでカスタムクラスターエンドポイントを構成する場合は、プライマリノードによる読み取りリクエストの許可[いいえ] に設定し、一貫性レベル最終的な整合性 (弱) に設定します。

クラスターエンドポイントの表示

  1. PolarDB コンソールにログインします。左側のナビゲーションウィンドウで、[グローバルデータベースネットワーク (GDN)] をクリックします。

  2. [グローバルデータベースネットワーク (GDN)] ページで、ターゲットの GDN を見つけ、[グローバルデータベースネットワーク ID] をクリックして GDN の詳細ページに移動します。

  3. [クラスター] セクションで、ターゲットのセカンダリクラスターを見つけ、[クラスターエンドポイント] 列の [表示] をクリックします。表示されるダイアログボックスでクラスターエンドポイントの詳細を表示できます。image

    説明
    • ここには、デフォルトのクラスターエンドポイントの接続情報 (プライベートおよびパブリックネットワークアドレスを含む) のみが表示されます。

    • より多くのエンドポイントの詳細を表示するには、[クラスターの概要ページを表示] をクリックします。ターゲットクラスターの詳細ページにリダイレクトされ、[データベース接続] セクションでより多くのエンドポイントを表示できます。

グローバルデータベースクラスターへの接続

異なるリージョンのアプリケーションは、最寄りのクラスターエンドポイントに接続して GDN にアクセスでき、GDN は自動的に読み書き分離を処理します。次のいずれかの方法でデータベースクラスターに接続できます。

DMS を使用したクラスターへの接続

Data Management (DMS) は、Alibaba Cloud が提供するグラフィカルなデータ管理ツールです。データ管理、スキーマ管理、ユーザー管理、セキュリティ監査、データトレンド、データ追跡、ビジネスインテリジェンス (BI) チャート、パフォーマンスの最適化、サーバー管理など、さまざまなデータ管理サービスを提供します。他のツールを使用せずに、DMS を使用して PolarDB クラスターを直接管理できます。

  1. PolarDB コンソールにログインします。クラスターリストで、接続したいクラスターの ID をクリックして、その [基本情報] ページに移動します。ページの右上隅にある [データベースにログイン] をクリックします。image

  2. 表示されるダイアログボックスで、クラスター用に作成したデータベースアカウントとパスワードを入力し、[ログイン] をクリックします。image

  3. クラスターにログインした後、左側のナビゲーションウィンドウで [データベースインスタンス] > [接続済みインスタンス] を選択して、 クラスターを管理します。image

クライアントを使用したクラスターへの接続

クライアントを使用して PolarDB クラスターに接続できます。次の手順では、pgAdmin 4 v9.0 クライアントを使用してクラスターに接続します。

  1. pgAdmin 4 クライアントをダウンロードしてインストールします。

  2. pgAdmin 4 クライアントを開き、[Servers] を右クリックし、[Register > Server...] を選択します。image

  3. [General] タブで接続名を設定します。[Connection] タブで、クラスターの接続情報を構成し、[Save] をクリックします。image

    image

    パラメーター

    説明

    ホスト名/アドレス

    PolarDB クラスターのエンドポイントとポート

    • ECS インスタンスから PolarDB クラスターにアクセスし、ECS インスタンスが PolarDB クラスターと同じ VPC にある場合は、[非公開] エンドポイントとポートを指定します。

    • オンプレミス環境から PolarDB クラスターにアクセスするには、[パブリック] エンドポイントとポートを指定します。

    • デフォルトのポート番号は 1521 です。

    ポート

    ユーザー名

    PolarDB クラスターのデータベースアカウントとパスワード

    パスワード

  4. 接続結果を表示します。接続情報が正しければ、次のインターフェイスが表示され、接続が成功したことを示します。image

    説明

    postgres はデフォルトのシステムデータベースです。このデータベースに対して操作を実行しないでください。

psql を使用したクラスターへの接続

PostgreSQL ダウンロードから psql をダウンロードして PolarDB クラスターに接続できます。PolarDB-Tools の psql を使用して PolarDB クラスターに接続することもできます。

説明
  • psql を使用したクラスター接続方法は、Windows と Linux システムで同じです。

  • 詳細については、「psql」をご参照ください。

構文

psql -h <host> -p <port> -U <username> -d <dbname>

パラメーター

説明

host

PolarDB クラスターのクラスターのエンドポイントとポート

  • ECS インスタンスから PolarDB クラスターにアクセスし、ECS インスタンスが PolarDB クラスターと同じ VPC にある場合は、[非公開] エンドポイントとポートを指定します。

  • オンプレミス環境から PolarDB クラスターにアクセスするには、[パブリック] エンドポイントとポートを指定します。

  • デフォルトのポート番号は 1521 です

port

username

PolarDB クラスターのデータベースアカウント

dbname

データベース名

psql -h pc-xxx.rwlb.rds.aliyuncs.com -p 1521 -U testusername -d postgres

プログラミング言語でのクラスターへの接続

PolarDB for PostgreSQL (Oracle 互換) クラスターへの接続は、通常の PostgreSQL データベースへの接続と似ています。エンドポイント、ポート、アカウント、パスワードなどの接続パラメーターを変更するだけです。以下は、特定のプログラミング言語で PolarDB クラスターに接続する方法の例です。

Java

この例では、Maven ベースの Java プロジェクトで PostgreSQL JDBC ドライバーを使用して PolarDB for PostgreSQL (Oracle 互換) クラスターに接続する方法について説明します。

  1. pom.xml ファイルに PostgreSQL JDBC ドライバーの依存関係を追加します。サンプルコード:

    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>42.2.18</version>
    </dependency>
  2. クラスターに接続します。<HOST><PORT><USER><PASSWORD><DATABASE><YOUR_TABLE_NAME><YOUR_TABLE_COLUMN_NAME> のプレースホルダーを実際のクラスター接続パラメーターに置き換えます。

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class PolarDBConnection {
        public static void main(String[] args) {
            // データベースの URL、ユーザー名、パスワード。
            String url = "jdbc:postgresql://<HOST>:<PORT>/<DATABASE>";
            String user = "<USER>";
            String password = "<PASSWORD>";
    
            try {
                // PostgreSQL JDBC ドライバーをロードします。
                Class.forName("org.postgresql.Driver");
                
                // 接続を確立します。
                Connection conn = DriverManager.getConnection(url, user, password);
                
                // Statement オブジェクトを作成します。
                Statement stmt = conn.createStatement();
                
                // SQL クエリを実行します。
                ResultSet rs = stmt.executeQuery("SELECT * FROM <YOUR_TABLE_NAME>");
                
                // 結果セットを処理します。
                while (rs.next()) {
                    System.out.println(rs.getString("<YOUR_TABLE_COLUMN_NAME>"));
                }
                
                // リソースを閉じます。
                rs.close();
                stmt.close();
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

Python

この例では、Python 3 で psycopg2 ライブラリを使用して PolarDB for PostgreSQL (Oracle 互換) クラスターに接続する方法について説明します。

  1. psycopg2 ライブラリをインストールします。

    pip3 install psycopg2-binary
  2. クラスターに接続します。<HOST><PORT><USER><PASSWORD><DATABASE><YOUR_TABLE_NAME> のプレースホルダーを実際のクラスター接続パラメーターに置き換えます。

    import psycopg2
    
    try:
        # 接続パラメーター
        conn = psycopg2.connect(
            host="<HOST>",  # クラスターのエンドポイント。
            database="<DATABASE>",  # データベース名。
            user="<USER>",  # ユーザー名。
            password="<PASSWORD>",  # パスワード。
            port="<PORT>"  # ポート番号。
        )
    
        # カーソルオブジェクトを作成します。
        cursor = conn.cursor()
    
        # クエリを実行します。
        cursor.execute("SELECT * FROM <YOUR_TABLE_NAME>")
    
        # すべての結果を取得します。
        records = cursor.fetchall()
        for record in records:
            print(record)
            
    except Exception as e:
        print("Error:", e)
    finally:
        # 接続を閉じます。
        if 'cursor' in locals():
            cursor.close()
        if 'conn' in locals():
            conn.close()

Go

この例では、Go 1.23.0 で database/sql パッケージと lib/pq ドライバーを使用して PolarDB for PostgreSQL (Oracle 互換) クラスターに接続する方法について説明します。

  1. lib/pq ドライバーをインストールします。

    go get -u github.com/lib/pq
  2. クラスターに接続します。<HOST><PORT><USER><PASSWORD><DATABASE>、および <YOUR_TABLE_NAME> プレースホルダーを、実際のクラスター接続パラメーターに置き換えます。

    package main
    
    import (
        "database/sql"
        "fmt"
        "log"
    
        _ "github.com/lib/pq" // PostgreSQL ドライバーを初期化します。
    )
    
    func main() {
        // 接続文字列のフォーマット。
        connStr := "user=<USER> password=<PASSWORD> dbname=<DATABASE> host=<HOST> port=<PORT> sslmode=disable"
    
        // データベース接続を開きます。
        db, err := sql.Open("postgres", connStr)
        if err != nil {
            log.Fatal(err)
        }
        defer db.Close() // プログラムが終了するときに接続を閉じます。
    
        // 接続をテストします。
        err = db.Ping()
        if err != nil {
            log.Fatal(err)
        }
        fmt.Println("Connected to PostgreSQL!")
    
        // クエリを実行します。
        rows, err := db.Query("SELECT * FROM <YOUR_TABLE_NAME>")
        if err != nil {
            log.Fatal(err)
        }
        defer rows.Close()
    }
    

関連する API 操作

API

説明

DescribeDBClusterEndpoints

PolarDB クラスターのエンドポイント情報を照会します。

ModifyDBClusterEndpoint

PolarDB クラスターエンドポイントのプロパティ (読み取り/書き込みモード、エンドポイントに新しいノードを自動的に追加するかどうか、整合性レベル、トランザクション分割、プライマリノードが読み取りリクエストを受け入れるかどうか、および接続プールなど) を変更します。