基于RDS原生复制创建云上备库

您可以通过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。当遇到复杂或难以解决的复制问题时,您可利用最新的备份快速恢复并重建原生复制实例。

  1. 源端全量备份。

    RDS备份上云功能现支持xbstream格式的xtrabackup流式备份(不支持tar等其他格式),并兼容QuickLZ压缩格式(可通过xtrabackup的--compress选项直接实现)。

    目前RDS原生复制仅支持MySQL 5.7版本,对应Percona XtraBackup 2.4版本。

    1. 安装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
    2. 执行备份。

      xtrabackup --backup --host=127.0.0.1 --port=3306 --user=<自建MySQL的账号> --password=<账号密码> --stream=xbstream --compress > ./<备份文件名,如backup_1206.xb>
  2. 备份数据上传至OSS。

    您可以通过不同工具上传备份文件,例如ossutil 工具、OSS SDK等。本文以ossutil工具为例。

    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. 重建实例。

    1. 访问RDS实例列表,在目标RDS MySQL实例的基本信息页面,单击右上角重建实例

    2. 在重建实例页面,选择Bucket和OSS文件,并单击确定image

步骤三:增量数据同步

  1. 自建MySQL数据库中创建复制账号。

    CREATE USER 'replica'@'%' IDENTIFIED BY 'Test123!';
    GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replica'@'%';
    FLUSH PRIVILEGES;
  2. 执行以下命令连接RDS MySQL实例,详情请参见通过命令行、客户端连接RDS MySQL实例

    mysql -h连接地址 -P端口 -u用户名 -p
    重要

    需要使用高权限账号连接RDS MySQL数据库。

  3. RDS MySQL实例中执行以下命令,搭建原生复制连接。

    # 搭建复制
    CHANGE MASTER TO MASTER_HOST = '<自建MySQL主机IP>', MASTER_USER = '<自建MySQL的复制账号>',MASTER_PASSWORD ='<自建MySQL复制账号密码>', MASTER_PORT = 3306,MASTER_AUTO_POSITION = 1;
    # 开启复制
    START Slave;
  4. 调试原生复制。

    执行以下命令查看复制状态。

    SHOW slave status\G

    如果出现复制报错,您可以通过具体的报错信息调整复制。

    如果出现复制中断,您可以在RDS控制台日志管理页面的错误日志页签查看。具体复制中断的问题及处理方法,请参见网络配置