全球資料庫網路(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叢集地址屬性,包括讀寫入模式、新節點是否自動加入本地址、一致性層級、事務拆分、主庫是否接受讀、串連池等。 |
