全球数据库网络(Global Database Network,简称GDN)是由分布于多个地域的多个PolarDB集群构成的网络。在本文介绍如何查看GDN的集群地址并连接GDN。
读写分离与请求路由
GDN中的集群(主集群和从集群)读写请求路由,是由每个集群的数据库代理配置所决定。您的应用程序无需修改代码,只需连接到相应集群的地址,读写请求便会按以下逻辑自行路由:
写请求(如
INSERT、UPDATE、DELETE等)、其他广播语法(如SET语句)和事务中的所有请求,会被自动转发到主集群的主节点处理。读请求默认会路由到本地从集群的只读节点,实现就近访问。如果开启了会话一致性,部分读请求也可能被路由到主集群的主节点以保证数据一致性。
此外,GDN还提供了一个统一的连接地址,这不仅能够实现就近访问,还能在主集群切换后保持域名不变。
仅读写模式为可读可写(自动读写分离)模式的集群地址或自定义地址支持GDN的读写分离服务。
主地址和读写模式为只读模式的自定义地址不支持GDN的读写分离服务。
为降低主从集群间的复制延迟对业务可能带来的影响,建议您在从集群上设置自定义集群地址时,将主库是否接受读设置为否,并设置一致性级别为最终一致性(弱)。
若您的业务场景无法接受从集群出现延迟,建议直接连接主集群的集群地址进行访问。
查看集群地址
登录PolarDB控制台,单击左侧导航栏中的全球数据库网络(GDN)。
在全球数据库网络(GDN)页面,找到目标GDN,单击全球数据库网络ID进入GDN详情页。
在集群列表区域内,找到目标从集群,单击集群地址栏的查看,即可在弹出的对话框中查看集群地址详情。
说明仅支持查看默认集群的连接地址信息,包括私网和公网地址。
如需获取更多连接地址的详细信息,请单击查看或管理更多地址,系统将跳转至目标集群的详情页面,您可以在数据库连接区域中查看更多连接地址。
连接全球数据库集群
各个地域的应用可直接连接就近的集群地址,从而连接到GDN,GDN会自动进行读写分离。连接数据库集群的方法有很多种,您可以根据实际业务需求来选择适合的连接方式。以下列举了部分连接数据库集群的示例:
使用DMS连接集群
DMS是阿里云提供的图形化的数据管理工具,它是一种集数据管理、结构管理、用户授权、安全审计、数据趋势、数据追踪、BI图表、性能与优化和服务器管理于一体的数据管理服务。您无需借助其他工具,即可直接在DMS上管理您的PolarDB集群。
前往PolarDB控制台,在集群列表中单击目标集群ID进入集群详情页。在页面右上角单击登录数据库。

在弹出的对话框中,输入PolarDB MySQL版集群中创建的数据库账号和数据库密码,单击登录。

登录后,您可以在左侧导航栏的已登录实例中查看到所登录的PolarDB MySQL版集群,并进行相应的管理操作。

使用客户端连接集群
您可以使用任何通用的客户端连接PolarDB集群。此处以MySQL Workbench 8.0.29版本为例,其它客户端的操作类似。
安装MySQL Workbench。官方下载地址请参见MySQL Workbench下载页面。
打开MySQL Workbench,选择。
输入连接信息,单击OK。
使用命令行连接集群
如果您的服务器安装了MySQL客户端,可以通过命令行连接PolarDB MySQL版数据库集群。
语法:
mysql -h<连接地址> -P<端口> -u<数据库用户名> -p<数据库用户密码>示例:
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 MySQL版集群的方式与连接其他MySQL数据库的方式一样,仅需将数据库连接地址、端口、账号及密码等进行替换即可。以下为您列举部分开发语言如何通过应用程序访问PolarDB数据库:
Java
此处以Maven项目为例,使用MySQL JDBC驱动连接PolarDB MySQL版集群。
首先,您需要在pom.xml文件中添加MySQL JDBC驱动的依赖,代码示例:
<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 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 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 (Data Source Name) 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集群地址属性,包括读写模式、新节点是否自动加入本地址、一致性级别、事务拆分、主库是否接受读、连接池等。  | 
