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流式备份+OSS对象存储+数据导入原生复制实例
方案优势
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.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安装
安装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
安装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>
自建数据库备份上传至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.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安装
安装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
安装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