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

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

最終更新日:Jun 22, 2026

グローバルデータベースネットワーク (GDN) は、異なるリージョンにデプロイされた複数の PolarDB クラスターで構成されます。このトピックでは、GDN のクラスターエンドポイントを表示し、それに接続する方法について説明します。

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

GDN 内のクラスター (プライマリクラスターとセカンダリクラスター) への読み書きリクエストのルーティングは、各クラスターの データベースプロキシ構成によって決定されます。アプリケーションコードを変更する必要はありません。各クラスターのアドレスに接続するだけで、読み書きリクエストは次のロジックに基づいて自動的にルーティングされます。

  • データベースプロキシは、INSERTUPDATEDELETE 文などの書き込みリクエスト、SET 文などの他のブロードキャスト構文、およびトランザクション内のすべてのリクエストを、処理のためにプライマリクラスターのプライマリノードに自動的に転送します。

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

説明

アプリケーションがセカンダリクラスターのクラスターエンドポイントに接続する場合も、同じルーティングルールが適用されます。クライアントがデータベースプロキシとの接続を確立すると、プロキシはセカンダリクラスターからプライマリクラスターのプライマリノードへのバックエンド接続を作成および維持します。これらの接続が事前に確立されるかどうかは、データベースプロキシの構成によって異なります。セカンダリクラスターからプライマリノードへのリンクは、多くの場合、クロスリージョン接続です。短時間接続のアプリケーションの場合、これらのクロスリージョン接続が頻繁に作成されると、ネットワークの変動によりパフォーマンスが低下する可能性があります。このシナリオでは、セカンダリクラスターのデータベースプロキシで オンデマンド接続 を有効にすることを推奨します。詳細については、「データベースプロキシの設定」をご参照ください。

さらに、GDN は グローバルドメイン名を提供します。これにより、最寄りアクセスが可能になるだけでなく、プライマリクラスターのスイッチオーバー後もドメイン名は変更されません。

詳細なルーティングロジック

宛先ノード

転送されるリクエスト

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

  • INSERTUPDATEDELETESELECT FOR UPDATE などのすべての DML 操作。

  • テーブルやデータベースの作成、削除、変更、権限管理など、すべての DDL 操作。

  • トランザクション内のすべてのリクエスト。

  • ユーザー定義関数。

  • ストアドプロシージャ。

  • EXECUTE 文。

  • Multi Statements

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

  • SELECT last_insert_id()

  • ユーザー変数のすべてのクエリと変更。

  • SHOW PROCESSLIST

  • KILL (KILL コマンドではなく、SQL の KILL 文)。

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

説明

リクエストがプライマリノードに送信されるのは、データベースプロキシ構成で プライマリノードによる読み取りリクエストの許可[はい] に設定されている場合のみです。

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

  • COM_STMT_EXECUTE コマンド。

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

  • システム変数のすべての変更。

  • USE コマンド。

  • COM_STMT_PREPARE コマンド。

  • COM_CHANGE_USERCOM_QUITCOM_SET_OPTION などのコマンド。

説明

セカンダリクラスターのプライマリノードは内部レプリケーション専用であり、読み書きトラフィックを処理しません。したがって、この表では、プライマリノードはプライマリクラスターのプライマリノードを指し、読み取り専用ノードはセカンダリクラスターの読み取り専用ノードを指します。

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

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

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

  • ご利用のアプリケーションがセカンダリクラスターからのレプリケーションラグを許容できない場合は、プライマリクラスターのクラスターエンドポイントに直接接続することを推奨します。

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

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

  2. グローバルデータベースネットワーク (GDN) ページで、対象の GDN を見つけ、その GDN ID/名前 をクリックして GDN の詳細ページを開きます。

  3. クラスター セクションで、対象のセカンダリクラスターを見つけ、表示 列の クラスターのエンドポイント をクリックして、クラスターエンドポイントの詳細を表示します。

    説明
    • デフォルトクラスターのエンドポイント情報のみ表示できます。これには プライベートネットワーク エンドポイントと パブリックネットワーク エンドポイントが含まれます。

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

GDN クラスターへの接続

異なるリージョンのアプリケーションは、最寄りのクラスターエンドポイントを使用して GDN に接続し、自動読み書き分離を有効にします。このトピックでは、いくつかの一般的な接続方法の例を示します。

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

DMS は、Alibaba Cloud のグラフィカルなデータ管理サービスです。追加のツールをインストールすることなく、DMS で直接 PolarDB クラスターを管理できます。

  1. PolarDB コンソールに移動します。[クラスターリスト] で、対象クラスターの ID をクリックしてクラスター詳細ページに移動します。ページの右上隅にある [データベースにログイン] をクリックします。image

  2. PolarDB for MySQL クラスターの[データベースアカウント][データベースパスワード] を入力し、[ログオン] をクリックします。イメージ

  3. ログイン後、左側のナビゲーションウィンドウの [ログイン中のインスタンス] リストで PolarDB for MySQL クラスターを見つけます。image

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

MySQL と互換性のあるクライアントを使用して、PolarDB クラスターに接続できます。次の例では、MySQL Workbench 8.0.29 を使用します。

  1. MySQL Workbench をダウンロードしてインストールします。

  2. MySQL Workbench を開き、[Database] > [Connect to Database] を選択します。

  3. 接続情報を入力し、[OK] をクリックします。

    Connection dialog

    パラメーター

    説明

    ホスト名

    データベースエンドポイント

    pc-2***.rwlb.rds.aliyuncs.com

    ポート

    データベースエンドポイントのポート番号。

    説明

    デフォルトのポートは 3306 です。

    3306

    [ユーザー名]

    データベースアカウント

    polardb_mysql_user

    [パスワード]

    データベースアカウントのパスワード。

    Pass***233

コマンドラインを使用したクラスターへの接続

ご利用のサーバーに MySQL クライアントがインストールされている場合は、次のコマンドを実行して PolarDB for MySQL クラスターに接続します。

構文

mysql -h<endpoint> -P<port> -u<database_username> -p<database_user_password>

mysql -h pc-2***.rwlb.rds.aliyuncs.com -P3306 -upolardb_mysql_user -pPass***233

パラメーター

説明

-h

データベースエンドポイント

pc-2***.rwlb.rds.aliyuncs.com

-P

データベースエンドポイントのポート番号。

説明
  • デフォルトのポートは 3306 です。

  • ポートがデフォルトポートの場合は、このパラメーターを省略できます。

3306

-u

データベースアカウント

polardb_mysql_user

-p

データベースアカウントのパスワード。

説明

このパラメーターは必須です。

  • このパラメーターを省略すると、Enter password の後にパスワードの入力を求められます。

  • このパラメーターを含める場合は、-p とパスワードの間にスペースを追加しないでください。

Pass***233

アプリケーションを使用したクラスターへの接続

PolarDB for MySQL クラスターへの接続は、MySQL データベースへの接続と同じです。エンドポイント、ポート、アカウント、パスワードを、ご利用の PolarDB クラスターの値に置き換えてください。言語別の例:

Java

Maven プロジェクトで MySQL JDBC ドライバーを使用して、PolarDB for MySQL クラスターに接続します。

  1. pom.xml ファイルに MySQL JDBC ドライバーの依存関係を追加します。

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.27</version>
    </dependency>
  2. クラスターに接続します。<HOST><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 DatabaseConnection {
       public DatabaseConnection() {
       }
    
       public static void main(String[] args) {
          // 接続するデータベースのエンドポイント、ポート、および名前。
          String url = "jdbc:mysql://<HOST>:3306/<DATABASE>?useSSL=false&serverTimezone=UTC";
          // データベースアカウント。
          String user = "<USER>";
          // データベースアカウントのパスワード。
          String password = "<PASSWORD>";
    
          try {
             Class.forName("com.mysql.cj.jdbc.Driver");
             Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement();
             // 取得するデータテーブルの名前。
             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 var7) {
             var7.printStackTrace();
          }
    
       }
    }

Python

Python 3 で PyMySQL ライブラリを使用して、PolarDB for MySQL クラスターに接続します。

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

    pip3 install PyMySQL
  2. クラスターに接続します。<HOST><USER><PASSWORD><DATABASE><YOUR_TABLE_NAME> を実際の値に置き換えてください。

    import pymysql
    
    # データベース接続パラメーター
    host = '<HOST>'  # PolarDB クラスターのエンドポイント
    port = 3306  # デフォルトのポートは 3306 です
    user = '<USER>'  # データベースアカウント
    password = '<PASSWORD>'  # データベースアカウントのパスワード
    database = '<DATABASE>'  # 接続するデータベースの名前
    
    try:
        # データベース接続を作成
        connection = pymysql.connect(
            host=host,
            port=port,
            user=user,
            passwd=password,
            db=database
        )
    
        # カーソルを取得
        with connection.cursor() as cursor:
            # SQL クエリを実行
            sql = "SELECT * FROM `<YOUR_TABLE_NAME>`"  # 取得するデータテーブルの名前
            cursor.execute(sql)
    
            # クエリ結果を取得
            results = cursor.fetchall()
            for row in results:
                print(row)
    
    finally:
        # データベース接続を閉じる
        if 'connection' in locals() and connection.open:
            connection.close()
    

Go

database/sql パッケージと go-sql-driver/mysql ドライバー (Go 1.23.0) を使用して、PolarDB for MySQL クラスターに接続します。

  1. go-sql-driver/mysql ドライバーをインストールします。

    go get -u github.com/go-sql-driver/mysql
  2. クラスターに接続します。<HOST><USER><PASSWORD><DATABASE><YOUR_TABLE_NAME> を実際の値に置き換えてください。

    package main
    
    import (
        "database/sql"
        "fmt"
        "log"
        _ "github.com/go-sql-driver/mysql"
    )
    
    func main() {
        // データベース接続パラメーター
        dbHost := "<HOST>"       // PolarDB クラスターのエンドポイント
        dbPort := "3306"         // デフォルトのポートは 3306 です
        dbUser := "<USER>"       // データベースアカウント
        dbPass := "<PASSWORD>"   // データベースアカウントのパスワード
        dbName := "<DATABASE>"   // 接続するデータベースの名前
    
        // データソース名 (DSN) を構築
        dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbUser, dbPass, dbHost, dbPort, dbName)
    
        // データベース接続を開く
        db, err := sql.Open("mysql", dsn)
        if err != nil {
            log.Fatalf("Failed to connect to database: %v", err)
        }
        defer db.Close()
    
        // 接続をテスト
        err = db.Ping()
        if err != nil {
            log.Fatalf("Failed to ping database: %v", err)
        }
    
        // カーソルを作成
        var result string
        err = db.QueryRow("SELECT VERSION()").Scan(&result)
        if err != nil {
            log.Fatalf("Failed to execute query: %v", err)
        }
    
        // データベースのバージョンを出力
        fmt.Printf("Connected to database, version: %s\n", result)
    
        // SQL クエリを実行
        rows, err := db.Query("SELECT * FROM `<YOUR_TABLE_NAME>`") // 取得するデータテーブルの名前
        if err != nil {
            log.Fatalf("Failed to execute query: %v", err)
        }
        defer rows.Close()
    }

関連ドキュメント

API リファレンス

API

説明

DescribeDBClusterEndpoints

PolarDB クラスターのクラスターエンドポイントに関する情報をクエリします。

ModifyDBClusterEndpoint

PolarDB クラスターエンドポイントの属性を変更します。属性には、読み書きモード、新規ノードの自動追加、整合性レベル、トランザクション分割、プライマリノードでの読み取りリクエストの受付、接続プールが含まれます。