前提条件
- MySQL数据库版本为5.5、5.6、5.7、8.0,目标实例版本不得低于源实例版本;
- 目标实例存储空间需大于源数据库占用的存储空间。
注意事项
- 如果源数据库没有主键或唯一约束,且所有字段没有唯一性,可能会导致目标数据库中出现重复数据。
- DTS在执行全量数据迁移时将占用源库和目标库一定的读写资源,可能会加重数据库压力。因此您需要在执行数据迁移前评估源库和目标库的性能,建议您在业务低峰期进行数据迁移。
- 数据迁移期间注意不要手动删除binlog文件,否则可能引起迁移失败;
- 预检查中如果源库日志模式检查失败,源数据库修改binlog_format、binlog_row_image后,请注意重启数据库,否则可能引起数据不一致;
- 数据迁移期间,避免会话级别修改binlog_format为ROW以外的其他模式,避免会话级别修改binlog_row_image为FULL以外的其他模式,否则可能引起迁移失败;
- 迁移期间,避免在目的数据库进行写入操作,否则可能引起数据不一致;
- 对于迁移失败的任务,DTS会触发自动恢复。在您将业务切换至目标实例前,请务必先结束或释放该任务,避免该任务被自动恢复后,导致源端数据覆盖目标实例的数据;
迁移说明
- 结构迁移
将迁移对象的结构从源数据库迁移到目标数据库,目前DTS支持的结构迁移对象为表、视图、存储过程、函数。同时支持用户权限迁移,如迁移对象中包含视图、存储过程、函数,请确保这类对象的definer用户一并迁移,以防止特殊对象迁移后无法调用。
特别说明:不支持触发器、事件迁移,如需迁移,请在数据迁移结束后手动迁移。
- 全量迁移
将源数据库迁移对象的存量数据,迁移到目标数据库。
特别说明:由于全量数据迁移会并发插入,导致目标实例的表存在碎片,全量迁移完成后目标库的表空间会比源库的表
空间大。
- 增量迁移
通过读取源数据库的binlog,将源数据库的增量数据迁移到目标数据库。
通过增量迁移,可以实现源端不停服的情况下迁移上云。
- 一致性校验
校验迁移前后源端与目标端数据一致性,及时发现不一致数据;
数据库账号的权限要求
数据库 |
结构迁移 |
全量迁移 |
增量迁移 |
一致性校验 |
源端为自建MySQL |
SELECT权限 |
SELECT权限 |
SELECT, RELOAD,REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW权限 |
CREATE,DROP,UPDATE,INSERT,SUPER 权限 |
源端为RDS MySQL实例 |
SELECT权限 |
SELECT权限 |
SELECT, RELOAD,REPLICATION SLAVE, REPLICATION CLIENT, SHOW VIEW权限 |
– |
目标RDS MySQL实例 |
读写权限 |
读写权限 |
读写权限 |
读写权限 |