全部產品
Search
文件中心

PolarDB:串連全球資料庫網路

更新時間:Sep 27, 2025

全球資料庫網路中每個子叢集(主叢集和從叢集)都提供了獨立的叢集地址,您可以根據應用所在的地區,串連就近的叢集地址,從而串連到GDN。GDN會自動進行讀寫分離,讀請求通常情況下會直接發往本地,而寫請求則被轉寄至主叢集。

讀寫分離與請求路由

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

  • 寫請求(如INSERTUPDATEDELETE等)和事務中的所有請求,會被自動轉寄到主叢集的主節點處理。

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

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

目標節點

轉寄的請求

只發往主叢集的主節點

  • DML操作(如INSERTUPDATEDELETE等)

  • DDL操作(如建表或庫、刪表或庫、變更表結構等)

  • SHOW命令

  • BEGINCOMMIT等事務相關命令

  • LISTENUNLISTENNOTIFY命令

  • ANALYZE命令

  • 兩階段交易認可命令

  • 事務中的請求(根據事務拆分配置會有變化)

  • 函數定義與調用(根據自訂函數路由規則配置會有變化)

  • 使用暫存資料表的請求

  • 多語句Multi Statements

  • 包含寫請求的PREPARE

發往唯讀節點或主節點

  • 非事務中的讀請求

  • EXPLAIN命令

  • 包含讀請求的PREPARE

總是發往所有節點

  • USE命令

  • DISCARDDEALLOCATE命令

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

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

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

查看叢集地址

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

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

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

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

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

串連全球資料庫叢集

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

使用DMS串連叢集

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

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

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

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

使用用戶端串連叢集

您可以使用任何通用的用戶端串連PolarDB叢集。此處pgAdmin 4 v9.0版本為例,其它用戶端的操作類似。

  1. 下載並安裝pgAdmin 4用戶端。

  2. 開啟pgAdmin 4用戶端,按右鍵Servers,選擇Register > Server...image

  3. General頁設定串連名稱,Connection頁設定要串連的叢集資訊,並單擊Saveimage

    image

    參數

    說明

    Host name/address

    PolarDB叢集的資料庫連接地址與連接埠

    • 如果您是使用ECS訪問PolarDB,並且ECS與PolarDB位於同一VPC內,請選擇私網地址與連接埠。

    • 如果您是在本地環境中訪問PolarDB,請選擇公網地址與連接埠。

    • 預設連接埠號碼為1521

    Port

    Username

    PolarDB叢集的資料庫帳號和密碼

    Password

  4. 查看串連結果。若串連資訊無誤,會出現如下介面,則表示串連成功。image

    說明

    postgres是預設的系統資料庫,請勿在該資料庫中進行任何操作。

使用命令列串連叢集

您可以前往PostgreSQL官網網站下載並使用psql工具串連PolarDB資料庫叢集。您也可以使用PolarDB提供的PolarDB-Tools工具包中的psql工具串連PolarDB資料庫叢集

說明

文法

psql -h <host> -p <port> -U <username> -d <dbname>

參數

描述

host

PolarDB叢集的資料庫連接地址與連接埠

  • 如果您是使用ECS訪問PolarDB,並且ECS與PolarDB位於同一VPC內,請選擇私網地址與連接埠。

  • 如果您是在本地環境中訪問PolarDB,請選擇公網地址與連接埠。

  • 預設連接埠號碼為1521

port

username

PolarDB叢集的資料庫帳號

dbname

需要管理維護的資料庫

樣本

psql -h pc-xxx.rwlb.rds.aliyuncs.com -p 1521 -U testusername -d postgres

使用應用程式串連叢集

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

Java

此處以Maven專案為例,使用PostgreSQL JDBC驅動串連PolarDB PostgreSQL版(相容Oracle)叢集。

  1. 首先,您需要在pom.xml檔案中添加PostgreSQL JDBC驅動的依賴,程式碼範例:

    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>42.2.18</version>
    </dependency>
  2. 串連叢集。請將參數<HOST><PORT><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 PolarDBConnection {
        public static void main(String[] args) {
            // 資料庫URL, 使用者名稱, 密碼
            String url = "jdbc:postgresql://<HOST>:<PORT>/<DATABASE>";
            String user = "<USER>";
            String password = "<PASSWORD>";
    
            try {
                // 載入JDBC驅動
                Class.forName("org.postgresql.Driver");
                
                // 建立串連
                Connection conn = DriverManager.getConnection(url, user, password);
                
                // 建立Statement對象
                Statement stmt = conn.createStatement();
                
                // 執行SQL查詢
                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 e) {
                e.printStackTrace();
            }
        }
    }

Python

此處以Python3為例,使用psycopg2庫串連PolarDB PostgreSQL版(相容Oracle)叢集。

  1. 首先,您需要安裝psycopg2庫。如果您還沒有安裝,可以通過以下命令進行安裝:

    pip3 install psycopg2-binary
  2. 串連叢集。請將參數<HOST><PORT><USER><PASSWORD><DATABASE><YOUR_TABLE_NAME>進行替換。

    import psycopg2
    
    try:
        # 串連參數
        conn = psycopg2.connect(
            host="<HOST>",  # 資料庫主機地址
            database="<DATABASE>",  # 資料庫名稱
            user="<USER>",  # 使用者名稱
            password="<PASSWORD>",  # 密碼
            port="<PORT>"  # 連接埠
        )
    
        # 建立遊標對象
        cursor = conn.cursor()
    
        # 執行查詢
        cursor.execute("SELECT * FROM <YOUR_TABLE_NAME>")
    
        # 擷取所有結果
        records = cursor.fetchall()
        for record in records:
            print(record)
            
    except Exception as e:
        print("錯誤:", e)
    finally:
        # 關閉串連
        if 'cursor' in locals():
            cursor.close()
        if 'conn' in locals():
            conn.close()

Go

此處以go1.23.0為例,使用database/sql包和lib/pq驅動來串連PolarDB PostgreSQL版(相容Oracle)叢集。

  1. 首先,您需要安裝lib/pq驅動。您可以通過以下命令進行安裝:

    go get -u github.com/lib/pq
  2. 串連叢集。請將參數<HOST><PORT><USER><PASSWORD><DATABASE><YOUR_TABLE_NAME>進行替換。

    package main
    
    import (
        "database/sql"
        "fmt"
        "log"
    
        _ "github.com/lib/pq" // 初始化驅動
    )
    
    func main() {
        // 連接字串格式
        connStr := "user=<USER> password=<PASSWORD> dbname=<DATABASE> host=<HOST> port=<PORT> sslmode=disable"
    
        // 開啟資料庫連接
        db, err := sql.Open("postgres", connStr)
        if err != nil {
            log.Fatal(err)
        }
        defer db.Close() // 程式退出前關閉串連
    
        // 測試連接是否成功
        err = db.Ping()
        if err != nil {
            log.Fatal(err)
        }
        fmt.Println("Connected to PostgreSQL!")
    
        // 執行查詢樣本
        rows, err := db.Query("SELECT * FROM <YOUR_TABLE_NAME>")
        if err != nil {
            log.Fatal(err)
        }
        defer rows.Close()
    }
    

相關API

API

描述

DescribeDBClusterEndpoints

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

ModifyDBClusterEndpoint

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