全部產品
Search
文件中心

ApsaraDB RDS:基於RDS原生複製建立雲上備庫

更新時間:Aug 22, 2025

RDS MySQL支援建立原生複製執行個體,用於在雲上為自建MySQL資料庫構建高可用的唯讀備庫。本文介紹原生複製執行個體的建立方法,以及配置自建資料庫至RDS MySQL原生複製執行個體的資料複製鏈路。

前提條件

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

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

    • 產品系列:基礎系列

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

      說明

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

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

      重要

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

  • 已為RDS MySQL執行個體建立高許可權帳號

  • 自建MySQL資料庫和RDS MySQL執行個體的網路設定已成功打通。

操作流程概述

基於RDS原生複製建立雲上備庫的操作流程包含三個步驟:

  1. 自建MySQL資料庫進行全量備份。

  2. 將自建MySQL資料庫的全量備份匯入RDS MySQL原生複製執行個體。

  3. 通過MySQL命令搭建自建MySQL資料庫到RDS MySQL原生複製執行個體間的複製鏈路。

方案一:XtraBackup流式備份+OSSObject Storage Service+資料匯入原生複製執行個體

方案優勢

RDS MySQL原生複製執行個體現已良好相容XtraBackup物理備份,具體支援以下特性:

  • 自動識別備份檔案中的GTID,實現位點自動對齊以搭建複製鏈路。

  • 支援將備份檔案上傳至OSS,並啟用服務端加密,確保資料安全。

  • 可通過選定的備份組重建原生複製執行個體,有效解決複雜的複製中斷問題。

費用說明

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

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

操作步驟

  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命令。

      xtrabackup --backup \
        --host=127.0.0.1 \
        --port=3306 \
        --user=<自建MySQL的帳號> \
        --password=<帳號密碼> \
        --stream=xbstream \
        --compress > ./<備份檔案名稱,如backup_1206.xb>
  2. 自建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>/
  3. 從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許可權。

      複製帳號密碼

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

  4. 查看複製狀態

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

方案二:XtraBackup流式備份+流式備份直傳+資料匯入原生複製執行個體

方案優勢

控制台介面操作,複製鏈路自動搭建,易用性高。

費用說明

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

操作步驟

  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命令。

      xtrabackup --backup \
        --host=127.0.0.1 \
        --port=3306 \
        --user=<自建MySQL的帳號> \
        --password=<帳號密碼> \
        --stream=xbstream \
        --compress > ./<備份檔案名稱,如backup_1206.xb>
  2. 自建資料庫資料備份傳輸到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許可權。

        複製帳號密碼

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

  3. 查看複製狀態

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

方案三:mysqldump邏輯備份+DMS資料匯入+SQL搭建複製鏈路

方案優勢

控制台介面操作,易用性高。

費用說明

新購RDS MySQL執行個體會產生RDS規格費用和儲存空間費用

操作步驟

  1. 使用mysqldump對自建MySQL資料庫進行邏輯備份,並擷取SQL檔案。命令如下:

    mysqldump --all-databases \
        --single-transaction \
        --order-by-primary \
        --set-gtid-purged=off \
        --master-data=2 \
        -u local_user \
        -p local_password \
        -h 127.0.0.1
        -P 3306 > data.sql
    • 由於RDS MySQL未開放修改SET GTID_PURGED的許可權,啟用該參數會導致SQL回放錯誤,因此需要在命令中設定set-gtid-purged=off

    • 使用mysqldump搭建從庫時,通過添加--master-data=2選項,可自動產生包含CHANGE MASTER TO語句的注釋資訊,便於直接擷取主庫的Binlog檔案名稱和位置,避免手動查詢和輸入複製位點。例如:

      image.png

  2. DMS匯入邏輯備份。

    1. 通過DMS登入RDS MySQL資料庫使用高許可權帳號)。

    2. 單擊DMS控制台左上方的2023-01-28_15-57-17.png表徵圖,選擇全部功能 > 資料庫開發 > 資料變更 > 資料匯入

      說明

      若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇資料庫開發 > 資料變更 > 資料匯入

    3. 資料變更工單申請頁面,選擇批量資料匯入,並選擇目標RDS MySQL資料庫,上傳邏輯備份SQL檔案。資料匯入的其他詳細配置參數,請參見資料匯入

  3. 在DMS中執行命令搭建複製鏈路。

    重要

    DMS匯入邏輯備份會在雲上備庫產生獨立的Binlog和GTID。若將此備庫切換為主節點,可能會導致這些多餘的GTID被複製到其他節點,從而引發複製中斷。為避免這一問題,可採取以下任意一種措施:

    • 在搭建複製前,先關閉再重新開啟原生複製,該操作會執行RESET MASTER

    • 在複寫拓撲中的其他節點插入空事務,覆蓋冗餘的GTID,起到佔位的效果

    # 搭建複製
    CHANGE MASTER TO MASTER_HOST = '<自建MySQL主機IP>', MASTER_USER = '<自建MySQL的複製帳號>',MASTER_PASSWORD ='<自建MySQL複製帳號密碼>', MASTER_PORT = 3306,MASTER_LOG_FILE = '<Binlog檔案名稱>',MASTER_LOG_POS = 190;
    # 開啟複製
    START SLAVE;
    # 查看複製狀態
    SHOW SLAVE STATUS\G