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

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

最終更新日:Nov 05, 2025

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

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

GDN 内のクラスターへの読み取りおよび書き込みリクエストのルーティングは、各クラスターの データベースプロキシ設定 によって決定されます。アプリケーション側でコードを変更する必要はありません。適切なクラスターのエンドポイントに接続するだけで、リクエストは次のロジックに基づいて自動的にルーティングされます。

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

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

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

クリックして詳細なルーティングロジックを表示

宛先ノード

転送されるリクエスト

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

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

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

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

  • ユーザー定義関数。

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

  • EXECUTE 文。

  • Multi Statements

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

  • SELECT last_insert_id()

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

  • SHOW PROCESSLIST

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

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

説明

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

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

  • COM_STMT_EXECUTE コマンド。

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

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

  • USE コマンド。

  • COM_STMT_PREPARE コマンド。

  • COM_CHANGE_USERCOM_QUITCOM_SET_OPTION などのコマンド。

説明

セカンダリクラスターのプライマリノードは、主にプライマリクラスターからの非同期データレプリケーションに使用され、読み取りまたは書き込みリクエストを処理しません。したがって、表内のプライマリノードはプライマリクラスターのプライマリノードを指し、読み取り専用ノードはセカンダリクラスターの読み取り専用ノードを指します。

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

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

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

  • ビジネスシナリオでセカンダリクラスターのレイテンシを許容できない場合は、プライマリクラスターのエンドポイントに直接接続してください。

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

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

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

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

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

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

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

異なるリージョンのアプリケーションは、最寄りのクラスターエンドポイントを使用して GDN に接続できます。GDN は自動的に読み書き分離を実行します。データベースクラスターにはいくつかの方法で接続できます。以下のセクションでは、さまざまな接続方法の例を示します。

DMS を使用してクラスターに接続する

DMS は Alibaba Cloud が提供する可視化されたデータ管理サービスです。DMS は、データ管理、スキーマ管理、アクセスの制御、セキュリティ監査、ビジネスインテリジェンス (BI) チャート、データトレンド、データ追跡、パフォーマンスの最適化、サーバー管理など、さまざまな管理サービスを提供します。他のツールを使用することなく、DMS で PolarDB クラスターを管理できます。

  1. PolarDB コンソールにログインします。左側のナビゲーションウィンドウで [クラスター] をクリックします。左上隅でリージョンを選択し、リスト内のクラスターの ID をクリックして基本情報ページに移動します。ページの右上隅にある [データベースにログイン] をクリックします。image

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

  3. PolarDB for MySQL クラスターにログインした後、左側のナビゲーションウィンドウで [接続済みインスタンス] をクリックして、PolarDB for MySQL クラスターを表示および管理します。image

クライアントを使用してクラスターに接続する

MySQL クライアントを使用して PolarDB クラスターに接続できます。この例では MySQL Workbench 8.0.29 を使用します。他の種類のクライアントを使用する場合の操作も同様です。

  1. MySQL Workbench をインストールします。詳細については、「MySQL Workbench ダウンロードページ」をご参照ください。

  2. MySQL Workbench を起動し、[データベース] > [データベースに接続] を選択します。

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

    连接界面

    パラメーター

    説明

    ホスト名

    データベースのエンドポイント。詳細については、「データベース接続」をご参照ください。

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

    ポート

    データベースエンドポイントに対応するポート番号。

    説明

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

    3306

    ユーザー名

    データベースアカウント。詳細については、「データベースアカウントの作成」をご参照ください。

    polardb_mysql_user

    パスワード

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

    Pass***233

CLI を使用してクラスターに接続する

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

構文:

mysql -h <Endpoint> -P <Port> -u <Account> -p <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. まず、MySQL JDBC ドライバーの依存関係を pom.xml ファイルに追加します。サンプルコード:

    <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) {
          // 接続する PolarDB クラスターのエンドポイント、ポート、データベース名。
          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

この例では、Python3 を使用して、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

この例では、go1.23.0 を使用して、database/sql パッケージと go-sql-driver/mysql ドライバーで 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 クラスターエンドポイントの属性 (読み書きモード、エンドポイントへの新しいノードの自動追加の有無、整合性レベル、トランザクション分割、プライマリノードが読み取りリクエストを受け入れるかどうか、接続プール設定など) を変更します。