您可以通过RDS原生复制功能实现自建MySQL平滑上云的操作,主要包含开启原生复制功能、全量数据导入、增量数据同步三个步骤。
前提条件
自建MySQL数据库已开启GTID模式。
执行
SHOW VARIABLES LIKE 'gtid_mode';
查看GTID是否开启。如果GTID未开启,执行SET GLOBAL gtid_mode=ON;
开启GTID模式。已创建RDS MySQL 5.7基础版实例,详情请参见创建RDS MySQL实例。
RDS MySQL实例已创建高权限账号,详情请参见创建账号。
已创建与RDS MySQL实例同地域的OSS Bucket,详情请参见控制台创建存储空间。
步骤一:开启原生复制功能
具体操作,请参见开启原生复制功能。
步骤二:全量数据导入
全量数据导入可以通过以下几种方式实现:
使用DTS进行全量数据导入
使用DMS导入逻辑备份数据
通过备份上云功能导入(推荐)
对于前两种方式,由于它们不会继承全量数据中的GTID,在搭建复制时需手动指定开始位置。而本文重点介绍的备份上云方案,能够自动读取备份集的GTID信息,并更新RDS实例的gtid_purged
参数,使得可以采用master_auto_position = 1
的方式轻松建立复制关系。
此外,RDS原生复制形态对自建数据库全量上云流程进行了优化,加快了数据导入速度,并将该功能整合进“重建实例”选项中。这不仅支持全量数据的一次性导入,还允许定期上传源数据库备份至OSS。当遇到复杂或难以解决的复制问题时,您可利用最新的备份快速恢复并重建原生复制实例。
源端全量备份。
RDS备份上云功能现支持xbstream格式的xtrabackup流式备份(不支持tar等其他格式),并兼容QuickLZ压缩格式(可通过xtrabackup的--compress选项直接实现)。
目前RDS原生复制仅支持MySQL 5.7版本,对应Percona XtraBackup 2.4版本。
安装xtrabackup。
yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm # 检查是否有xtrabckup yum list | grep percona percona-release enable-only tools release yum install -y percona-xtrabackup-24
执行备份。
xtrabackup --backup --host=127.0.0.1 --port=3306 --user=<自建MySQL的账号> --password=<账号密码> --stream=xbstream --compress > ./<备份文件名,如backup_1206.xb>
备份数据上传至OSS。
您可以通过不同工具上传备份文件,例如ossutil 工具、OSS SDK等。本文以ossutil工具为例。
安装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>/
重建实例。
访问RDS实例列表,在目标RDS MySQL实例的基本信息页面,单击右上角重建实例。
在重建实例页面,选择Bucket和OSS文件,并单击确定。
步骤三:增量数据同步
自建MySQL数据库中创建复制账号。
CREATE USER 'replica'@'%' IDENTIFIED BY 'Test123!'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES;
执行以下命令连接RDS MySQL实例,详情请参见通过命令行、客户端连接RDS MySQL实例。
mysql -h连接地址 -P端口 -u用户名 -p
重要需要使用高权限账号连接RDS MySQL数据库。
RDS MySQL实例中执行以下命令,搭建原生复制连接。
# 搭建复制 CHANGE MASTER TO MASTER_HOST = '<自建MySQL主机IP>', MASTER_USER = '<自建MySQL的复制账号>',MASTER_PASSWORD ='<自建MySQL复制账号密码>', MASTER_PORT = 3306,MASTER_AUTO_POSITION = 1; # 开启复制 START Slave;
调试原生复制。
执行以下命令查看复制状态。
SHOW slave status\G
如果出现复制报错,您可以通过具体的报错信息调整复制。
如果出现复制中断,您可以在RDS控制台日志管理页面的错误日志页签查看。具体复制中断的问题及处理方法,请参见网络配置。