RDS MySQL支援建立原生複製執行個體,用於在雲上為自建MySQL資料庫構建高可用的唯讀備庫。本文介紹原生複製執行個體的建立方法,以及配置自建資料庫至RDS MySQL原生複製執行個體的資料複製鏈路。
前提條件
已建立或將已有執行個體升級為原生複製執行個體,執行個體需滿足如下條件(可在執行個體基本資料頁面查看):
資料庫版本:MySQL 5.7(小版本大於等於20240930)、8.0(小版本大於等於20250531)
產品系列:基礎系列
計費方式:訂用帳戶、隨用隨付
說明如需使用Serverless形態的原生複製執行個體,需先建立隨用隨付執行個體並開啟原生複製,再將計費方式變更為Serverless。
支援地區:華東2(上海)、華北2(北京)、華南1(深圳)、華南3(廣州)和西南1(成都)
重要RDS原生複製目前僅支援如上地區,其他地區陸續開放中,如有其他地區需求請提交工單。
自建MySQL資料庫與RDS MySQL執行個體的資料庫大版本保持一致(例如均為MySQL 8.0)。原生複製不支援跨大版本搭建備庫,若大版本不一致(如將自建MySQL 5.7的備份匯入RDS MySQL 8.0執行個體),匯入備份任務將中斷,並出現類似如下報錯:
[ERROR] [MY-011825] [Xtrabackup] This version of Percona XtraBackup can only perform backups and restores against MySQL 8.0 and Percona Server 8.0, please use Percona XtraBackup 2.4 for this database.已為RDS MySQL執行個體建立高許可權帳號。
自建MySQL資料庫和RDS MySQL執行個體的網路設定已成功打通。
操作流程概述
基於RDS原生複製建立雲上備庫的操作流程包含三個步驟:
自建MySQL資料庫進行全量備份。
將自建MySQL資料庫的全量備份匯入RDS MySQL原生複製執行個體。
通過MySQL命令搭建自建MySQL資料庫到RDS MySQL原生複製執行個體間的複製鏈路。
方案一:XtraBackup流式備份+OSSObject Storage Service+資料匯入原生複製執行個體
方案優勢
RDS MySQL原生複製執行個體現已良好相容XtraBackup物理備份,具體支援以下特性:
自動識別備份檔案中的GTID,實現位點自動對齊以搭建複製鏈路。
支援將備份檔案上傳至OSS,並啟用服務端加密,確保資料安全。
可通過選定的備份組重建原生複製執行個體,有效解決複雜的複製中斷問題。
費用說明
操作步驟
在自建資料庫中安裝XtraBackup並執行備份
安裝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.rpmMySQL 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安裝
安裝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.rpmMySQL 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
安裝qpress:由於Ubuntu系統安裝的XtraBackup不會整合qpress,因此需要單獨進行安裝。
sudo apt-get install -y qpress
執行備份:
以下三種壓縮方案均基於
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>
自建Database Backup上傳至OSS
支援通過不同工具上傳備份檔案,例如ossutil 工具、OSS SDK等。本文以ossutil工具為例。
重要請確保目標OSS Bucket所在地區和RDS MySQL執行個體保持一致,否則後續OSS備份檔案上傳至RDS時將檢索失敗。
安裝ossutil。
yum install -y unzip sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash ossutil config上傳備份資料至OSS。
ossutil -e <OSS的Endpoint> -i <your_AccessKeyId> -k <your_AccessKeySecret> cp <備份檔案名> oss://<Bucket_name>/
從OSS匯入備份檔案至RDS,並搭建自動複製鏈路
訪問RDS執行個體列表,選擇地區,點擊目標執行個體ID進入詳情頁。
單擊左側導覽列中的原生複製。
在原生複製頁面中單擊匯入全量數據,配置如下參數,並單擊確定。
配置類別
參數名
說明
備份上傳方式配置(必填)
MySQL版本
系統自動顯示5.7或8.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 CLIENT、REPLICATION SLAVE許可權。複製帳號密碼
輸入源自建資料庫的帳號密碼。
查看複製狀態
返回RDS執行個體詳情頁的原生複製頁面,查看資料複製鏈路資訊。當複製狀態顯示為Running時,表示資料複製鏈路已成功搭建。
方案二:XtraBackup流式備份+流式備份直傳+資料匯入原生複製執行個體
方案優勢
控制台介面操作,複製鏈路自動搭建,易用性高。
費用說明
新購執行個體開啟原生複製時會收取新執行個體費用,已有執行個體升級為原生複製執行個體不額外收取費用。
操作步驟
在自建資料庫中安裝XtraBackup並執行備份
安裝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.rpmMySQL 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安裝
安裝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.rpmMySQL 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
安裝qpress:由於Ubuntu系統安裝的XtraBackup不會整合qpress,因此需要單獨進行安裝。
sudo apt-get install -y qpress
執行備份:
以下三種壓縮方案均基於
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>
自建資料庫資料備份傳輸到RDS
自建資料庫安裝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密碼>在RDS內匯入資料
登入RDS管理主控台,在上方選擇地區,單擊執行個體ID進入詳情頁。
單擊左側導覽列中的原生複製。
在原生複製頁面中單擊匯入全量數據,配置如下參數,並單擊確定。
配置類別
參數名
說明
備份上傳方式配置(必填)
MySQL版本
系統自動顯示5.7或8.0,無需配置。
方式
選擇流式備份直傳。
備份源IP
輸入傳輸備份的IP地址。
備份源連接埠
輸入傳輸備份的連接埠,預設為9999。
推薦開啟自動搭建複製,系統將按照如下配置自動搭建資料複製鏈路。如您未開啟自動搭建複製,在匯入全量資料後需手動搭建複製鏈路。
自動複製鏈路配置(選填)
自動搭建複製
開啟開關,將自動搭建自建MySQL庫到RDS MySQL執行個體的複製關係。
複製源IP
輸入源自建資料庫IP。
複製源連接埠
輸入源自建資料庫連接埠號碼。
複製源帳號
輸入源自建資料庫的帳號,源帳號需具備
REPLICATION CLIENT、REPLICATION SLAVE許可權。複製帳號密碼
輸入源自建資料庫的帳號密碼。
查看複製狀態
返回RDS執行個體詳情頁的原生複製頁面,查看資料複製鏈路資訊。當複製狀態顯示為Running時,表示資料複製鏈路已成功搭建。
方案三:mysqldump邏輯備份+DMS資料匯入+SQL搭建複製鏈路
方案優勢
控制台介面操作,易用性高。
費用說明
新購RDS MySQL執行個體會產生RDS規格費用和儲存空間費用。
操作步驟
使用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檔案名稱和位置,避免手動查詢和輸入複製位點。
DMS匯入邏輯備份。
通過DMS登入RDS MySQL資料庫(使用高許可權帳號)。
單擊DMS控制台左上方的
表徵圖,選擇。說明若您使用的是非極簡模式的控制台,在頂部功能表列中,選擇。
在資料變更工單申請頁面,選擇批量資料匯入,並選擇目標RDS MySQL資料庫,上傳邏輯備份SQL檔案。資料匯入的其他詳細配置參數,請參見資料匯入。
在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