グローバルデータベースネットワーク (GDN) は、異なるリージョンにデプロイされた複数の PolarDB クラスターのネットワークです。このトピックでは、GDN のクラスターエンドポイントを表示し、それに接続する方法について説明します。
読み書き分離とリクエストのルーティング
GDN 内のクラスターへの読み取りおよび書き込みリクエストのルーティングは、各クラスターの データベースプロキシ設定 によって決定されます。アプリケーション側でコードを変更する必要はありません。適切なクラスターのエンドポイントに接続するだけで、リクエストは次のロジックに基づいて自動的にルーティングされます。
INSERT、UPDATE、DELETE文などの書き込みリクエスト、SET文などの他のブロードキャスト構文、およびトランザクション内のすべてのリクエストは、処理のためにプライマリクラスターのプライマリノードに自動的に転送されます。読み取りリクエストは、最寄りのアクセスを実現するために、デフォルトでローカルのセカンダリクラスターの読み取り専用ノードにルーティングされます。セッションの一貫性 が有効になっている場合、データ整合性を確保するために、一部の読み取りリクエストがプライマリクラスターのプライマリノードにルーティングされることもあります。
GDN は グローバルドメイン名 も提供します。この機能により、最寄りのアクセスが可能になるだけでなく、プライマリクラスターのスイッチオーバー後もドメイン名が変わらないことが保証されます。
[読み取り/書き込みモード] が [読み取り/書き込み (自動読み書き分離)] に設定されているクラスターエンドポイントまたはカスタムエンドポイントのみが、GDN の読み書き分離サービスをサポートします。
[プライマリエンドポイント] および [読み取り/書き込みモード] が [読み取り専用] に設定されているカスタムエンドポイントは、GDN の読み書き分離サービスをサポートしません。
プライマリクラスターとセカンダリクラスター間のレプリケーションの遅延がビジネスに与える潜在的な影響を軽減するために、セカンダリクラスターでカスタムクラスターエンドポイントを構成する際には、プライマリノードによる読み取りリクエストの許可 を [いいえ] に設定し、一貫性レベル を 最終的な整合性 (弱) に設定することをお勧めします。
ビジネスシナリオでセカンダリクラスターのレイテンシを許容できない場合は、プライマリクラスターのエンドポイントに直接接続してください。
クラスターエンドポイントの表示
PolarDB コンソールにログインし、左側のナビゲーションウィンドウで [グローバルデータベースネットワーク (GDN)] をクリックします。
[グローバルデータベースネットワーク (GDN)] ページで、ターゲット GDN を見つけ、その [グローバルデータベースネットワーク ID] をクリックして詳細ページを開きます。
[クラスター] セクションで、ターゲットのセカンダリクラスターを見つけ、[クラスターエンドポイント] 列の [表示] をクリックします。表示されるダイアログボックスで、クラスターエンドポイントの詳細を表示できます。
説明デフォルトクラスターのエンドポイント情報のみを表示できます。これには [プライベート] エンドポイントと [パブリック] エンドポイントが含まれます。
より多くのエンドポイント詳細を表示するには、[クラスターの概要ページにアクセス] をクリックします。ターゲットクラスターの詳細ページにリダイレクトされ、[データベース接続] セクションでより多くのエンドポイントを表示できます。
グローバルデータベースクラスターへの接続
異なるリージョンのアプリケーションは、最寄りのクラスターエンドポイントを使用して GDN に接続できます。GDN は自動的に読み書き分離を実行します。データベースクラスターにはいくつかの方法で接続できます。以下のセクションでは、さまざまな接続方法の例を示します。
DMS を使用してクラスターに接続する
DMS は Alibaba Cloud が提供する可視化されたデータ管理サービスです。DMS は、データ管理、スキーマ管理、アクセスの制御、セキュリティ監査、ビジネスインテリジェンス (BI) チャート、データトレンド、データ追跡、パフォーマンスの最適化、サーバー管理など、さまざまな管理サービスを提供します。他のツールを使用することなく、DMS で PolarDB クラスターを管理できます。
PolarDB コンソールにログインします。左側のナビゲーションウィンドウで [クラスター] をクリックします。左上隅でリージョンを選択し、リスト内のクラスターの ID をクリックして基本情報ページに移動します。ページの右上隅にある [データベースにログイン] をクリックします。

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

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

クライアントを使用してクラスターに接続する
MySQL クライアントを使用して PolarDB クラスターに接続できます。この例では MySQL Workbench 8.0.29 を使用します。他の種類のクライアントを使用する場合の操作も同様です。
MySQL Workbench をインストールします。詳細については、「MySQL Workbench ダウンロードページ」をご参照ください。
MySQL Workbench を起動し、 を選択します。
接続情報を入力し、[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 |
-u | データベースアカウント。詳細については、「データベースアカウントの作成」をご参照ください。 | polardb_mysql_user |
-p | データベースアカウントのパスワード。 説明 このパラメーターは必須です。
| Pass***233 |
アプリケーションを使用してクラスターに接続する
PolarDB for MySQL クラスターへの接続は、通常の MySQL データベースへの接続と似ています。データベースのエンドポイント、ポート、アカウント、パスワードを置き換えるだけで済みます。以下の例は、いくつかの開発言語でアプリケーションを使用して PolarDB データベースにアクセスする方法を示しています。
Java
この例では、Maven プロジェクトを使用して、MySQL JDBC ドライバーで PolarDB for MySQL クラスターに接続します。
まず、MySQL JDBC ドライバーの依存関係を pom.xml ファイルに追加します。サンプルコード:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.27</version> </dependency>クラスターに接続します。
<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 クラスターに接続します。
まず、PyMySQL ライブラリをインストールします。次のコマンドを実行してインストールできます:
pip3 install PyMySQLクラスターに接続します。
<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 クラスターに接続します。
まず、
go-sql-driver/mysqlドライバーをインストールします。次のコマンドを実行してドライバーをインストールできます:go get -u github.com/go-sql-driver/mysqlクラスターに接続します。
<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()
関連ドキュメント
グローバルデータベースネットワーク (GDN): GDN、そのサービスアーキテクチャ、および一般的なシナリオについて説明します。
グローバルドメイン名の作成: 最寄りのアクセスを可能にし、プライマリクラスターの切り替え後もドメイン名が変わらないようにする統一された接続アドレスを作成する方法について説明します。
関連する API 操作
API | 説明 |
PolarDB クラスターのエンドポイント情報をクエリします。 | |
PolarDB クラスターエンドポイントの属性 (読み書きモード、エンドポイントへの新しいノードの自動追加の有無、整合性レベル、トランザクション分割、プライマリノードが読み取りリクエストを受け入れるかどうか、接続プール設定など) を変更します。 |