全部產品
Search
文件中心

ApsaraDB RDS:使用原生複製執行個體

更新時間:Sep 30, 2025

本文介紹如何建立RDS MySQL原生複製執行個體或將已有執行個體升級為RDS MySQL原生複製執行個體,同時說明MySQL原生複製執行個體的使用許可權及使用限制。

前提條件

如需建立或將已有執行個體升級為原生複製執行個體,需滿足以下條件(可在執行個體基本資料頁面查看):

  • 資料庫版本:MySQL 5.7(小版本大於等於20240930)、8.0(小版本大於等於20250531)

  • 產品系列:基礎系列

  • 計費方式:訂用帳戶、隨用隨付

    說明

    如需使用Serverless形態的原生複製執行個體,需先建立隨用隨付執行個體並開啟原生複製,再將計費方式變更為Serverless

  • 支援地區:華東2(上海)、華北2(北京)、華南1(深圳)、華南3(廣州)和西南1(成都)

    重要

    RDS原生複製目前僅支援如上地區,其他地區陸續開放中,如有其他地區需求請提交工單

費用說明

  • 新購執行個體開啟原生複製時會收取新執行個體費用,已有執行個體升級為原生複製執行個體不額外收取費用。

  • 在匯入全量資料至RDS MySQL執行個體的過程中,如果您選擇先將自建Database Backup上傳至OSS,再從OSS下載備份至RDS,則備份儲存在OSS的期間會產生OSS儲存費用

原生複製許可權

RDS MySQL原生複製執行個體的高許可權帳號將擁有額外的操作許可權,這些許可權通常在常規RDS MySQL執行個體中不可用。

原生複製命令許可權

原生複製執行個體允許高許可權帳號執行以下MySQL原生複製命令。

  • 配置主庫(Master)與從庫(Slave)進行複製同步:CHANGE MASTER TO具體資訊,請參見CHANGE MASTER TO

  • 啟動複製進程:START SLAVE;具體資訊請參見START SLAVE

  • 停止複製進程:STOP SLAVE;具體資訊請參見STOP SLAVE

  • 重設從庫狀態:RESET SLAVE;以便重新開始與主庫的複製過程。具體資訊請參見RESET SLAVE

參數修改許可權

原生複製執行個體允許高許可權帳號執行以下三個關於修改運行態參數的SQL語句。

  • 設定資料庫伺服器的唯讀模式。

    SET GLOBAL read_only = ON/OFF;

    設定為ON時,伺服器進入唯讀模式。設定為OFF時,解除唯讀狀態,允許讀寫操作。

  • 設定當前會話是否將其執行的SQL語句記錄到二進位日誌(Binary Log)中。

    SET SESSION sql_log_bin = ON/OFF;

    設定為ON時,會話中的SQL操作將被記錄到二進位日誌中。設定為OFF時,會話執行的SQL語句不會被記錄到二進位日誌中。

  • 設定全域事務標識符(GTID)的下一個值。

    SET SESSION GTID_NEXT = "your_gtid_value";

當執行個體發生跨機遷移,變更配置等營運操作時,原生複製命令操作許可權和參數修改許可權將會被臨時收回,但不會影響執行個體的複製進程,營運任務完成後許可權會再次放開。

注意事項

RDS MySQL原生複製執行個體存在以下限制:

使用限制

  • 執行個體會變為唯讀。

  • 不支援升級大版本。

  • 不支援升級產品系列(如基礎系列升級為高可用系列或叢集系列)。

  • 不支援切換Virtual Private Cloud。

  • 不支援庫表恢複。

  • 已有執行個體升級為原生複製執行個體期間,執行個體可能會出現一次30秒的短暫閃斷,請在低峰期操作並確保應用具有重連機制。

許可權限制

  • 高許可權帳號限制

    原生複製功能所擁有的部分Super許可權綁定在RDS MySQL執行個體的高許可權帳號上,僅高許可權帳號才能執行CHANGE MASTERSTART SLAVE等原生命令。

  • 複製許可權限制

    原生複製功能在應用外部Binlog時,會先進行許可權判斷,所有超出下列許可權的操作都不會被應用,並且導致複製中斷。

    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, 
    DROP, RELOAD, PROCESS, REFERENCES, INDEX,
    ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES,
    LOCK TABLES, EXECUTE, REPLICATION SLAVE,
    REPLICATION CLIENT, CREATE VIEW, SHOW VIEW,
    CREATE ROUTINE, ALTER ROUTINE, CREATE USER, 
    EVENT, TRIGGER ON *.* TO XXX; 
  • 系統庫限制

    所有針對系統庫的操作都會被忽略,系統庫包括mysqlsysinformation_schemaperformance_schema__recyclebin__

    說明

    CREATE USER,GRANT等間接修改系統庫的操作不會被忽略,但SQL語句需要遵循複製許可權限制,越權操作(如GRANT super on *.* to xxx;)會中斷複製。

  • GTID限制

    在MySQL原生複製配置中,要求主庫與從庫的GTID模式必須一致,二者均啟用或均禁用GTID。RDS MySQL執行個體不支援關閉GTID模式,因此,若要將RDS MySQL執行個體作為從庫與外部主庫建立複製關係,該外部主庫必須開啟GTID模式以保持相容。

    搭建複製關係前,需要先在外部主庫執行SHOW VARIABLES LIKE 'gtid_mode';查看GTID是否開啟。如果GTID未開啟,執行SET GLOBAL gtid_mode=ON;開啟外部主庫的GTID模式。

一、升級為原生複製執行個體

新購執行個體時開啟原生複製

新購RDS MySQL執行個體(標準建立頁面)時,在頁面下方展開更多配置,開啟原生複製開關。需注意,原生複製入口僅在執行個體滿足前提條件時展示。

image

已有執行個體升級為原生複製執行個體

重要

已有執行個體升級為原生複製執行個體期間,執行個體可能會出現一次30秒的短暫閃斷,請在低峰期操作並確保應用具有重連機制。

  1. 訪問RDS執行個體列表,選擇地區,點擊目標執行個體ID(目標執行個體需滿足前提條件)。

  2. 在左側導覽列單擊原生複製,單擊頁面中的啟動原生複製

  3. 仔細閱讀彈窗內容後,單擊確定

    說明

    若您未授權過RDS官方服務帳號訪問您OSS的許可權,以及在您帳號下建立彈性網卡並掛載的許可權,請先分別勾選進行授權。

二、搭建自建資料庫至RDS MySQL的資料複製

  1. 在自建資料庫中安裝XtraBackup並執行備份

    1. 安裝XtraBackup:

      CentOS安裝

      • MySQL 5.7

        wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
        yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
      • MySQL 8.0

        wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
        yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm

      Ubuntu安裝

      1. 安裝XtraBackup

        • MySQL 5.7

          wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
          yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
        • MySQL 8.0

          wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
          yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
      2. 安裝qpress:由於Ubuntu系統安裝的XtraBackup不會整合qpress,因此需要單獨進行安裝。

        sudo apt-get install -y qpress
    2. 執行備份:

      以下三種壓縮方案均基於XtraBackup命令實現,適用於以InnoDB為主引擎的執行個體。若您的資料庫包含MyISAM表,請使用innobackupex命令。

      方案一:預設qpress壓縮

      xtrabackup --backup \
        --host=127.0.0.1 \
        --port=3306 \
        --user=<自建MySQL的帳號> \
        --password=<帳號密碼> \
        --stream=xbstream \
        --compress > ./<備份檔案名稱,如backup_1206.xb>

      方案二:QuickLZ壓縮

      本方案要求您所使用的XtraBackup版本為8.0.34-29或更早版本,詳情請參見Percona XtraBackup官網教程

      xtrabackup --backup \
        --host=127.0.0.1 \
        --port=3306 \
        --user=<自建MySQL的帳號> \
        --password=<帳號密碼> \
        --stream=xbstream \
        --compress > ./<備份檔案名稱,如backup_1206_qp.xb>

      方案三:ZSTD外部壓縮

      xtrabackup --backup \
        --host=127.0.0.1 \
        --port=3306 \
        --user=<自建MySQL的帳號> \
        --password=<帳號密碼> \
        --stream=xbstream \
        | zstd -q - > ./<備份檔案名稱,如backup_1206.xb.zstd>
  2. 匯入全量資料並自動搭建資料複製

    說明

    匯入資料前,請先打通自建MySQL資料庫和RDS MySQL執行個體的網路設定

    方式一:從OSS匯入備份檔案

    1. 自建Database Backup上傳至OSS

      支援通過不同工具上傳備份檔案,例如ossutil 工具、OSS SDK等。本文以ossutil工具為例。

      重要

      請確保目標OSS Bucket所在地區和RDS MySQL執行個體保持一致,否則後續OSS備份檔案上傳至RDS時將檢索失敗。

      1. 安裝ossutil。

        yum install -y unzip
        sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash
        ossutil config
      2. 上傳備份資料至OSS。

        ossutil -e <OSS的Endpoint> -i <your_AccessKeyId> -k <your_AccessKeySecret> cp <備份檔案名> oss://<Bucket_name>/
    2. 從OSS匯入備份檔案至RDS,並搭建自動複製鏈路

      1. 訪問RDS執行個體列表,選擇地區,點擊目標執行個體ID進入詳情頁。

      2. 單擊左側導覽列中的原生複製

      3. 在原生複製頁面中單擊匯入全量資料,配置如下參數,並單擊確定

        配置類別

        參數名

        說明

        備份上傳方式配置(必填)

        MySQL版本

        系統自動顯示5.78.0,無需配置。

        方式

        選擇OSS下載

        OSS Bucket

        選擇自建庫備份檔案所在的OSS Bucket。關於OSS Bucket的更多資訊,請參見上傳檔案

        OSS檔案名稱

        選擇OSS Bucket中的自建庫備份檔案。若備份在OSS Bucket子目錄中,需手動輸入完整路徑名進行搜尋。支援以下三種格式的備份檔案:

        • Xtrabackup直接產生的xbstream檔案。

        • 使用Xtrabackup內建quicklz壓縮產生的_qp.xb檔案。

        • 經zstd壓縮的xbstream檔案(尾碼為.xb.zst)。

        推薦開啟自動搭建複製,系統將按照如下配置自動搭建資料複製鏈路。如您未開啟自動搭建複製,在匯入全量資料後需手動搭建複製鏈路

        自動複製鏈路配置(選填)

        自動搭建複製

        開啟開關,將自動搭建自建MySQL庫到RDS MySQL執行個體的複製關係。

        複製源IP

        輸入源自建資料庫IP。

        複製源連接埠

        輸入源自建資料庫連接埠號碼。

        複製源帳號

        輸入源自建資料庫的帳號,源帳號需具備REPLICATION CLIENTREPLICATION SLAVE許可權。

        複製帳號密碼

        輸入源自建資料庫的帳號密碼。

    方式二:自建庫資料備份傳輸到RDS

    1. 自建資料庫安裝backup-helper工具,並建立備份傳輸進程

      # 安裝backup-helper工具
      wget -O backup-helper https://mysql-backup-helper.oss-cn-beijing.aliyuncs.com/v1.0.0-alpha/backup-helper && chmod +x backup-helper
      
      # 通過工具建立備份傳輸進程(需確保環境中有運行中的MySQL,並根據自建庫版本安裝了對應版本的XtraBackup)
      ./backup-helper --backup --mode=stream --host=<MySQL ip> --port=<MySQL連接埠> --user=<MySQL賬戶> --password=<MySQL密碼>
    2. 在RDS內匯入資料

      1. 登入RDS管理主控台,在上方選擇地區,單擊執行個體ID進入詳情頁。

      2. 單擊左側導覽列中的原生複製

      3. 在原生複製頁面中單擊匯入全量資料,配置如下參數,並單擊確定

        配置類別

        參數名

        說明

        備份上傳方式配置(必填)

        MySQL版本

        系統自動顯示5.78.0,無需配置。

        方式

        選擇流式備份直傳

        備份源IP

        輸入傳輸備份的IP地址。

        備份源連接埠

        輸入傳輸備份的連接埠,預設為9999。

        推薦開啟自動搭建複製,系統將按照如下配置自動搭建資料複製鏈路。如您未開啟自動搭建複製,在匯入全量資料後需手動搭建複製鏈路

        自動複製鏈路配置(選填)

        自動搭建複製

        開啟開關,將自動搭建自建MySQL庫到RDS MySQL執行個體的複製關係。

        複製源IP

        輸入源自建資料庫IP。

        複製源連接埠

        輸入源自建資料庫連接埠號碼。

        複製源帳號

        輸入源自建資料庫的帳號,源帳號需具備REPLICATION CLIENTREPLICATION SLAVE許可權。

        複製帳號密碼

        輸入源自建資料庫的帳號密碼。

    如您在匯入全量資料時未選擇自動搭建複製,或自動複製鏈路出現問題暫無法恢複,您可參考以下步驟,手動建立自建MySQL資料庫到RDS MySQL執行個體的資料複製鏈路。

    手動搭建資料複製

    1. 在RDS執行個體中建立高許可權帳號

    2. 在自建資料庫中建立複製帳號並授權。

      -- 建立複製帳號replica,允許從任意IP登入,正式環境建議指定僅允許從指定IP串連。
      -- Test123!為測試密碼樣本,正式環境請按需修改為高強度密碼。
      CREATE USER 'replica'@'%' IDENTIFIED BY 'Test123!';
      
      -- 授予複製要求的權限
      GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replica'@'%';
      
      -- 重新整理許可權
      FLUSH PRIVILEGES;
    3. 使用高許可權帳號登入RDS執行個體,手動搭建複製鏈路。

      -- 搭建複製
      CHANGE MASTER TO MASTER_HOST='<源端IP>', MASTER_PORT='<源端連接埠>', MASTER_USER='<複製帳號>', MASTER_PASSWORD='<複製帳號密碼>', MASTER_USE_AUTO_POSITION=1;
      -- 開啟複製
      START SLAVE;
      -- 查看複製狀態
      SHOW SLAVE STATUS;
  3. 查看複製狀態

    返回RDS執行個體詳情頁的原生複製頁面,查看資料複製鏈路資訊。當複製狀態顯示為Running時,表示資料複製鏈路已成功搭建。

關閉原生複製

  1. 訪問RDS執行個體列表,選擇地區,點擊目標執行個體ID(目標執行個體需滿足前提條件)。

  2. 在左側導覽列單擊原生複製,單擊頁面中的關閉原生複製模式

  3. 單擊確定

    重要

    單擊確定後,將終止當前自建MySQL庫到RDS MySQL原生複製執行個體的複製關係。RDS MySQL原生複製執行個體將恢複為常規RDS MySQL執行個體,執行個體將從唯讀切換為可讀寫,後續可正常執行寫入操作。

相關內容與API

  • 通過API(CreateDBInstance)建立RDS MySQL原生複製執行個體,需注意:

    • 執行個體基本配置需滿足前提條件,其餘參數按需配置即可。

    • 設定ExternalReplication為ON。

  • 通過API(ImportUserBackupFile)為已有執行個體搭建原生複製鏈路。

附錄:網路設定

更多網路連接問題,請參見串連/網路

業務情境

適用情境

配置方法

費用

同VPC互相訪問

ECS中的自建MySQL

在同一個VPC內,網路預設連通,無需額外配置,只需設定安全性群組即可,開放該ECS對應安全性群組的3306連接埠給RDS的IP地址。

串連到RDS MySQL原生複製執行個體後執行show variables like 'report_host';命令可擷取IP地址。

跨VPC互相訪問

阿里雲跨VPC、跨地區資料同步

  • VPC對等串連費用

  • 雲企業網CEN串連費用:CEN執行個體免費,在實際使用過程中可能會因為資料轉送、頻寬需求等因素產生相關費用。

線下IDC與雲上RDS互相訪問

IDC自建資料庫到RDS原生複製執行個體

通過VPN網關或專線接入等方式,串連IDC網路與RDS原生複製執行個體所在的VPC。

不同方式的費用不同,可查看官網文檔。

跨雲互相訪問

他雲資料庫到RDS原生複製執行個體

在多雲環境中,需建立跨雲網路連接以實現互訪。對於RDS原生複製情境,當RDS作為源端、他雲資料庫作為目標端時,可通過他雲提供的網路服務,利用VPN或專線等方式來建立網路連接。

不同方式的費用不同,可查看官網文檔。

公網訪問(不推薦)

/

RDS原生複製執行個體支援通過公網訪問外部節點。但需注意,外網鏈路存在安全隱患,不推薦使用。

不同方式的費用不同,可查看官網文檔。