本文介绍使用阿里云数据传输服务(DTS),从 Amazon Aurora 迁移 MySQL 到阿里云RDS。

前提条件

  • 为保障DTS可以通过公网连接至Amazon Aurora for MySQL,Amazon Aurora for MySQL的网络与安全配置中须将公开可用性功能设置为
  • 已经创建阿里云RDS实例

迁移限制

  • 结构迁移不支持 event 的迁移。
  • 对于MySQL的浮点型float/double,DTS通过round(column,precision)来读取该列的值,若列类型没有明确定义其精度,对于float,精度为38位,对于double类型,精度为308,请先确认DTS的迁移精度是否符合业务预期。
  • 如果使用了对象名映射功能,依赖这个对象的其他对象可能迁移失败。
  • 当选择增量迁移时,源端的Aurora实例需要按照要求开启 binlog。
  • 当选择增量迁移时,源库的 binlog_format 要为 row。
  • 当选择增量迁移且源 MySQL 如果为 5.6 及以上版本时,它的 binlog_row_image 必须为 full。

迁移账号权限要求

迁移数据源 结构迁移 全量迁移 增量迁移
Amazon Aurora for MySQL实例 迁移对象的select权限 迁移对象的select权限 迁移对象的select、replication slave、replication client权限
阿里云RDS for MySQL实例 迁移对象的读写权限 迁移对象的读写权限 迁移对象的读写权限

注意事项

  • 如果源数据库没有主键或唯一约束,且所有字段没有唯一性,可能会导致目标数据库中出现重复数据。
  • 对于七天之内的异常任务,DTS会尝试自动恢复,可能会导致迁移任务的源端数据库数据覆盖目标实例数据库中写入的业务数据,迁移任务结束后务必将DTS访问目标实例账号的写权限revoke命令回收掉。

操作步骤

  1. 登录Amazon RDS控制台。
  2. 进入Amazon Aurora for MySQL实例的基本信息页面。
  3. 选择角色为写入器的节点。
  4. 查看连接和安全性页面的终端节点信息和安全组信息。

  5. 单击安全组名称,打开安全组的管理页面。
  6. 右键点击目标安全组,单击编辑入站规则

  7. 单击添加规则,放通DTS中源实例地区对应的IP地址,单击保存。具体参数配置说明如下:
    参数 说明
    类型 入站的数据类型,这里选择MySQL/Aurora
    来源 选择自定义,在右侧框内粘贴DTS IP段里的IP地址,用英文逗号(,)分隔。


  8. 登录DTS控制台
  9. 在左侧菜单栏单击数据迁移,单击右上角创建迁移任务
  10. 填写源库和目标库信息,具体参数配置说明如下:
    库类别 参数 说明
    源库 实例类型 源库实例类型,这里选择有公网IP的自建数据库
    实例地区 如果您的实例进行了访问限制,请先放开对应地区公网IP段的访问权限后,再配置数据迁移任务。
    说明 可以单击右侧获取DTS IP段查看、复制对应地区的IP段。
    数据库类型 源数据库类型,这里选择MySQL
    主机名或IP地址 Amazon Aurora for MySQL实例的终端节点
    端口 默认的3306端口。
    数据库账号 Amazon Aurora for MySQL数据库的主用户账号。
    数据库密码 Amazon Aurora for MySQL数据库的主用户密码。
    目标库 实例类型 目标实例的类型,这里选RDS实例
    实例地区 目标实例的地区。
    RDS实例ID 对应地区下的实例ID,这里选择想要迁移到的目标实例的ID。
    数据库账号 目标实例的拥有读写权限的账号。
    数据库密码 目标实例的对应账号的密码。
    连接方式 目标实例的连接方式,选择非加密传输


  11. 填写完毕后单击测试连接,确定源库和目标库都测试通过
  12. 单击授权白名单并进入下一步
  13. 选择迁移对象迁移类型
    说明
    • 为保证迁移数据的一致性,建议选择结构迁移+全量数据迁移+增量数据迁移。
    • 结构迁移和全量数据迁移暂不收费,增量数据迁移根据链路规格按小时收费。


  14. 单击预检查并启动,等待预检查结束。
    说明 如果检查失败,可以根据错误项的提示进行修复,然后重新启动任务。


  15. 单击下一步,在购买配置确认对话框中,勾选《数据传输(按量付费)服务条款》并单击立即购买并启动

    如果选择了增量迁移,那么进入增量迁移阶段后,源库的更新写入都会被DTS同步到目标RDS实例。迁移任务不会自动结束。如果您只是为了迁移,那么建议在增量迁移无延迟的状态时,源库停写几分钟,等待增量迁移再次进入无延迟状态后,停止掉迁移任务,直接将业务切换到目标RDS实例上即可。

  16. 单击目标地域,查看迁移状态。当迁移停止后,状态为已完成

    说明 当增量迁移无延迟时,AWS和阿里云RDS上面的数据一致,可以停止迁移任务。由于AWS会以最快的速度回收binlog,而增量迁移依赖源库的binlog日志,为了防止未增量同步的binlog日志被清除,您可以调用AWS的存储过程 mysql.rds_set_configurations来设置binlog的保存时间。例如将保存时间延长至一天,调用这个存储过程的命令为:
    call mysql.rds_set_configurations(“binlog retention hours” 24)

    至此,完成 Amazon Aurora for MySQL数据库迁移到阿里云 RDS for MySQL的数据迁移任务。