全部產品
Search
文件中心

PolarDB:串連全球資料庫網路

更新時間:Nov 05, 2025

全球資料庫網路(Global Database Network,簡稱GDN)是由分佈於多個地區的多個PolarDB叢集構成的網路。在本文介紹如何查看GDN的叢集地址並串連GDN。

讀寫分離與請求路由

GDN中的叢集(主叢集和從叢集)讀寫請求路由,是由每個叢集的資料庫代理配置所決定。您的應用程式無需修改代碼,只需串連到相應叢集的地址,讀寫請求便會按以下邏輯自行路由:

  • 寫請求(如INSERTUPDATEDELETE等)、其他廣播文法(如SET語句)和事務中的所有請求,會被自動轉寄到主叢集的主節點處理。

  • 讀請求預設會路由到本地從叢集的唯讀節點,實現就近訪問。如果開啟了會話一致性,部分讀請求也可能被路由到主叢集的主節點以保證資料一致性。

此外,GDN還提供了一個統一的串連地址,這不僅能夠實現就近訪問,還能在主叢集切換後保持網域名稱不變。

單擊展開查看詳細轉寄邏輯

目標節點

轉寄的請求

只發往主叢集的主節點

  • 所有DML操作(INSERTUPDATEDELETESELECT FOR UPDATE等)。

  • 所有DDL操作(建表或庫、刪表或庫、變更表結構、許可權等)。

  • 所有事務中的請求。

  • 使用者自訂函數。

  • 預存程序。

  • EXECUTE語句。

  • Multi Statements

  • 使用到暫存資料表的請求。

  • SELECT last_insert_id()

  • 所有對使用者變數的查詢和更改。

  • SHOW PROCESSLIST

  • KILL(SQL語句中的KILL,非命令KILL)。

發往唯讀節點或主節點

說明

僅當資料庫代理配置中主庫是否接受讀時會發往主節點。

  • 非事務中的讀請求。

  • COM_STMT_EXECUTE命令。

總是發往所有節點

  • 所有系統變數的更改。

  • USE命令。

  • COM_STMT_PREPARE命令。

  • COM_CHANGE_USERCOM_QUITCOM_SET_OPTION等命令。

說明

從叢集中的主節點主要用於非同步複製主叢集資料,不處理任何讀寫請求。因此,表中的主節點指的是主叢集中的主節點,而唯讀節點則指的是從叢集中的唯讀節點。

說明
  • 讀寫入模式可讀可寫(自動讀寫分離)模式的叢集地址或自訂地址支援GDN的讀寫分離服務。

  • 主地址讀寫入模式唯讀模式的自訂地址不支援GDN的讀寫分離服務。

  • 為降低主從叢集間的複寫延遲對業務可能帶來的影響,建議您在從叢集上設定自訂叢集地址時,將主库是否接受读設定為,並設定一致性级别最终一致性(弱)

  • 若您的業務情境無法接受從叢集出現延遲,建議直接連接主叢集的叢集地址進行訪問。

查看叢集地址

  1. 登入PolarDB控制台,單擊左側導覽列中的全球資料庫網路(GDN)

  2. 全球資料庫網路(GDN)頁面,找到目標GDN,單擊全球資料庫網路ID進入GDN詳情頁。

  3. 叢集列表地區內,找到目標從叢集,單擊叢集地址欄的查看,即可在彈出的對話方塊中查看叢集地址詳情。image

    說明
    • 僅支援查看預設叢集的串連地址資訊,包括私網公網地址。

    • 如需擷取更多串連地址的詳細資料,請單擊查看或管理更多地址,系統將跳轉至目的地組群的詳情頁面,您可以在資料庫連接地區中查看更多串連地址。

串連全球資料庫叢集

各個地區的應用可直接連接就近的叢集地址,從而串連到GDN,GDN會自動進行讀寫分離。串連資料庫叢集的方法有很多種,您可以根據實際業務需求來選擇適合的串連方式。以下列舉了部分串連資料庫叢集的樣本:

使用DMS串連叢集

DMS是阿里雲提供的圖形化的資料管理工具,它是一種集資料管理、結構管理、使用者授權、安全審計、資料趨勢、資料追蹤、BI圖表、效能與最佳化和伺服器管理於一體的資料管理服務。您無需藉助其他工具,即可直接在DMS上管理您的PolarDB叢集。

  1. 前往PolarDB控制台,在叢集列表中單擊目的地組群ID進入叢集詳情頁。在頁面右上方單擊登入資料庫image

  2. 在彈出的對話方塊中,輸入PolarDB MySQL版叢集中建立的資料庫帳號資料庫密碼,單擊登入image

  3. 登入後,您可以在左側導覽列的已登入執行個體中查看到所登入的PolarDB MySQL版叢集,並進行相應的管理操作。image

使用用戶端串連叢集

您可以使用任何通用的用戶端串連PolarDB叢集。此處以MySQL Workbench 8.0.29版本為例,其它用戶端的操作類似。

  1. 安裝MySQL Workbench。官方下載地址請參見MySQL Workbench下載頁面

  2. 開啟MySQL Workbench,選擇Database > Connect to Database

  3. 輸入串連資訊,單擊OK

    串連介面

    參數

    說明

    樣本

    Hostname

    資料庫連接地址

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

    Port

    資料庫連接地址的連接埠號碼,與資料庫連接地址相對應。

    說明

    預設連接埠為3306。

    3306

    Username

    資料庫帳號

    polardb_mysql_user

    Password

    資料庫帳號密碼。

    Pass***233

使用命令列串連叢集

如果您的伺服器安裝了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。

  • 如果連接埠號碼為預設連接埠,該參數可以不填寫。

3306

-u

資料庫帳號

polardb_mysql_user

-p

資料庫帳號密碼。

說明

該參數為必填參數。

  • 如果不填寫該參數,在Enter password後會重新要求輸入密碼。

  • 如果填寫該參數,-p與資料庫密碼之間不能有空格。

Pass***233

使用應用程式串連叢集

串連PolarDB MySQL版叢集的方式與串連其他MySQL資料庫的方式一樣,僅需將資料庫連接地址、連接埠、帳號及密碼等進行替換即可。以下為您列舉部分開發語言如何通過應用程式訪問PolarDB資料庫:

Java

此處以Maven專案為例,使用MySQL JDBC驅動串連PolarDB 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) {
          // 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版叢集。

  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 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 (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()
    }

相關文檔

相關API

API

描述

DescribeDBClusterEndpoints

查詢PolarDB叢集的串連地址資訊。

ModifyDBClusterEndpoint

修改PolarDB叢集地址屬性,包括讀寫入模式、新節點是否自動加入本地址、一致性層級、事務拆分、主庫是否接受讀、串連池等。