全部產品
Search
文件中心

PolarDB:全球資料庫網路(GDN)多寫版使用說明

更新時間:Mar 25, 2026

GDN基礎版的從叢集通過跨地區路由將寫請求轉寄至主叢集,當主從叢集物理距離較遠時,寫入延遲較大。GDN多寫版提供表級多寫方案,各子叢集可對其擁有寫入權限的表執行本地寫入,實現讀寫就近處理,有效降低跨地區寫入延遲。

說明

PolarDB GDN多寫版目前處於灰階發布階段。如需使用,可通過DingTalk搜尋群號入群諮詢。

DingTalk群號:30245017864

工作原理

GDN多寫版深度融合PolarDB的物理複製技術,構建面向跨地區部署的表級多寫能力。核心機制如下:

  • 表級寫入權限歸屬:每張表的寫入許可權嚴格歸屬於唯一的子叢集,確保同一時刻僅有一個子叢集可對該表執行寫操作。

  • 本地寫入:各子叢集可對其擁有寫入權限的表執行本地寫入,實現低延遲、高吞吐的資料更新。

  • 全域資料同步:所有資料變更通過高效能的物理複製鏈路即時同步至其他子叢集,確保全域資料一致性。

  • 全量資料可讀:所有子叢集均可直接讀取全量表的最新資料,支援跨地區情境下的本地讀訪問。

以三個子叢集(中國(香港)、新加坡、法蘭克福)為例:

  • 在中國(香港)子叢集建立 Table A,其寫入權限預設歸屬中國(香港)子叢集。

  • 在新加坡子叢集建立 Table B,其寫入權限歸屬新加坡子叢集。

  • 在法蘭克福子叢集建立 Table C,其寫入權限歸屬法蘭克福子叢集。

中國(香港)子叢集對 Table A 的所有寫操作直接作用於本機資料,同時通過物理複製即時接收來自新加坡和法蘭克福子叢集同步的 Table B 和 Table C 的資料變更。因此,中國(香港)子叢集不僅能高效執行本地寫入(Table A),還可直接讀取所有表(Table A、Table B、Table C)的最新資料。新加坡和法蘭克福子叢集同理。

image

適用範圍

您的叢集版本需為MySQL 8.0.2

建立GDN多寫版

  1. 申請使用:PolarDB GDN多寫版目前處於灰階發布階段。如需使用,可通過DingTalk搜尋群號入群諮詢。DingTalk群號:30245017864

  2. 建立與管理全球資料庫網路:選擇符合適用範圍的一個叢集作為全球資料庫網路(GDN)的主叢集。

    重要

    建立GDN多寫版過程中,主叢集會執行一次重啟。

  3. 添加與管理從叢集:前往PolarDB購買頁,為上述建立的全球資料庫網路(GDN)添加相應的從叢集。

  4. 串連全球資料庫網路:在GDN中,每個子叢集(主叢集和從叢集)均提供獨立的叢集地址。您可以根據應用所在的地區,串連就近的叢集地址以實現訪問。此外,GDN還提供了一個全域網域名稱,這不僅能夠實現就近訪問,還能在主叢集切換後保持網域名稱不變。

  5. 根據業務需求,在指定地區的子叢集中建立對應的表,以實現各子叢集對其擁有寫入權限的表執行本地寫入,實現讀寫就近處理,有效降低跨地區寫入延遲。

管理表的寫入權限

在某一子叢集上建立表時,預設該子叢集即獲得該表的寫入許可權。每張表有且僅有一個子叢集持有其寫入權限,同時所有子叢集預設具備對該表的唯讀訪問能力。

轉移寫入權限

通過以下DDL命令可將表的寫入權限在子叢集間動態轉移:

命令

說明

ALTER TABLE <table_name> GDN_RELEASE;

釋放當前子叢集對錶的寫入權限。執行後,當前子叢集對該表變為唯讀狀態。

ALTER TABLE <table_name> GDN_FETCH;

擷取表的寫入權限至當前子叢集。執行前需先在原子叢集上釋放該表的寫入權限。

查看寫入權限歸屬

通過SHOW CREATE TABLE命令的輸出可判斷當前子叢集是否擁有該表的寫入權限:

  • 輸出中包含/* GDN_REMOTE */標籤:該表的寫入權限歸屬於其他子叢集,當前子叢集為唯讀狀態。

  • 輸出中不包含/* GDN_REMOTE */標籤:當前子叢集擁有該表的寫入權限。

操作樣本

以下樣本示範如何將在中國(香港)子叢集建立的表t_A的寫入權限轉移到新加坡子叢集。

  1. 在中國(香港)子叢集建立表並確認寫入權限歸屬。

    -- 在中國(香港)子叢集建立表
    CREATE TABLE t_A (id INT PRIMARY KEY);
    
    -- 查看錶結構,不包含 GDN_REMOTE 標籤,說明寫入權限在當前子叢集
    SHOW CREATE TABLE t_A\G
    Create Table: CREATE TABLE `t_A` (
      `id` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  2. 在中國(香港)子叢集釋放表的寫入權限。

    ALTER TABLE t_A GDN_RELEASE;
    
    -- 再次查看,輸出中包含 GDN_REMOTE 標籤,說明寫入權限已釋放
    SHOW CREATE TABLE t_A\G
    Create Table: CREATE TABLE `t_A` (
      `id` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) /* GDN_REMOTE */ ENGINE=InnoDB DEFAULT CHARSET=utf8
  3. 在新加坡子叢集擷取表的寫入權限。

    ALTER TABLE t_A GDN_FETCH;
    
    -- 查看錶結構,不包含 GDN_REMOTE 標籤,說明寫入權限已轉移至當前子叢集
    SHOW CREATE TABLE t_A\G
    Create Table: CREATE TABLE `t_A` (
      `id` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  4. 在法蘭克福子叢集查看,確認該表仍為唯讀狀態。

    -- 輸出中包含 GDN_REMOTE 標籤,說明寫入權限不在當前子叢集
    SHOW CREATE TABLE t_A\G
    Create Table: CREATE TABLE `t_A` (
      `id` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) /* GDN_REMOTE */ ENGINE=InnoDB DEFAULT CHARSET=utf8