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原生複製建立雲上備庫的操作流程包含三個步驟:
自建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命令。xtrabackup --backup \ --host=127.0.0.1 \ --port=3306 \ --user=<自建MySQL的帳號> \ --password=<帳號密碼> \ --stream=xbstream \ --compress > ./<備份檔案名稱,如backup_1206.xb>
自建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命令。xtrabackup --backup \ --host=127.0.0.1 \ --port=3306 \ --user=<自建MySQL的帳號> \ --password=<帳號密碼> \ --stream=xbstream \ --compress > ./<備份檔案名稱,如backup_1206.xb>
自建資料庫資料備份傳輸到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