本文介绍如何使用数据传输服务DTS(Data Transmission Service),将Amazon RDS for MySQL迁移至阿里云 RDS MySQL 或RDS MySQL Serverless 。DTS支持结构迁移、全量数据迁移以及增量数据迁移,同时使用这三种迁移类型可以实现在自建应用不停服的情况下,平滑地完成数据库迁移。

  • 为保障DTS能够通过公网连接至Amazon RDS for MySQL,需要将Amazon RDS for MySQL的 公开可用性 设置为
  • 已创建阿里云 RDS MySQL 或RDS MySQL Serverless 实例,详情请参见 创建RDS MySQL实例
  • 阿里云RDS MySQL的存储空间须大于Amazon RDS for MySQL已使用的存储空间。
  • DTS在执行全量数据迁移时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,在数据库性能较差、规格较低或业务量较大的情况下(例如源库有大量慢SQL、存在无主键表或目标库存在死锁等),可能会加重数据库压力,甚至导致数据库服务不可用。因此您需要在执行数据迁移前评估源库和目标库的性能,同时建议您在业务低峰期执行数据迁移(例如源库和目标库的CPU负载在30%以下)。
  • 如果源库中待迁移的表没有主键或唯一约束,且所有字段没有唯一性,可能会导致目标数据库中出现重复数据。
  • 对于数据类型为FLOAT或DOUBLE的列,DTS会通过 ROUND(COLUMN,PRECISION) 来读取该列的值。如果没有明确定义其精度,DTS对FLOAT的迁移精度为38位,对DOUBLE的迁移精度为308位,请确认迁移精度是否符合业务预期。
  • DTS会自动地在阿里云RDS MySQL中创建数据库,如果待迁移的数据库名称不符合阿里云RDS的定义规范,您需要在配置迁移任务之前在阿里云RDS MySQL中创建数据库。
  • 如果源或目标数据库是阿里云数据库实例(例如RDS MySQL、云数据库MongoDB版等)或ECS上的自建数据库,DTS会自动将对应地区DTS服务的IP地址添加到阿里云数据库实例的白名单或ECS的安全规则中,您无需手动添加,请参见 DTS服务器的IP地址段 ;如果源或目标数据库是IDC自建数据库或其他云数据库,则需要您手动添加对应地区DTS服务的IP地址,以允许来自DTS服务器的访问。
  • 上述场景中,DTS自动添加或您手动添加DTS服务的公网IP地址段可能会存在安全风险,一旦使用本产品代表您已理解和确认其中可能存在的安全风险,并且需要您做好基本的安全防护,包括但不限于加强账号密码强度防范、限制各网段开放的端口号、内部各API使用鉴权方式通信、定期检查并限制不需要的网段,或者使用通过内网(专线/VPN网关/智能网关)的方式接入。
  • DTS任务完成或释放后,建议您手动检测并删除DTS相关的服务器IP地址段。
  • 源表DMS_ONLINE_DDL过程中是否复制临时表到目标库 如源库使用 数据管理DMS(Data Management Service) 执行Online DDL变更,您可以选择是否迁移Online DDL变更产生的临时表数据。
  • :迁移Online DDL变更产生的临时表数据。
  •