本文为您介绍DTS实例的常见限制,以帮助您提前了解相关注意事项及DTS功能的限制,从而有效减少实例异常的发生。
通用注意事项及限制
若源库类型与目标库类型相同,建议源和目标库版本保持一致,或者从低版本同步到高版本以保障兼容性。若DTS实例为高版本同步至低版本,可能存在数据库兼容性问题。
若DTS实例不包含库表结构任务(接收数据的目标对象不是通过DTS创建),则您需要自行确保源库与目标库的兼容性(如字段的类型、长度、约束)、目标库结构的完整性等,否则可能会导致DTS实例运行失败或数据丢失。
库表结构任务不会修改存储过程的
routine_body
、函数的routine_body
及视图的select_statement
。若您的DTS实例为异构数据库间的同步或迁移,或者库表列名称使用了映射功能,建议您根据实际情况手动同步或迁移存储过程、函数和视图。否则,可能会导致库表结构任务出现语法错误。为确保数据的一致性和兼容性,建议使用DTS执行库表结构、全量和增量任务。
说明不同实例支持的任务类型不同,建议在确保目标库没有同名对象的前提下,同时选中该实例支持的所有任务类型。
若在使用库表列名映射功能时为非全表同步或迁移,则目标库比源库缺少的列的数据将会丢失。
在全量任务运行时,DTS将会占用源和目标库一定的读写资源,可能会导致数据库的负载上升。因此建议您在DTS实例运行前评估源库和目标库的性能,并在业务低峰期运行实例(例如源库和目标库的CPU负载在30%以下)。
在库表结构任务和全量任务阶段,请勿执行库或表结构变更的DDL操作,否则会导致DTS实例运行失败。
在DTS实例运行期间,若存在除DTS外的其他数据源向目标库写入数据,则可能会导致源库与目标库的数据不一致,甚至会导致DTS实例运行失败。
若仅执行全量任务,请勿向源库中写入新的数据,否则会导致源库与目标库的数据不一致。
由于DTS写入数据的逻辑采用并发写入,因此无法保证数据的写入顺序,同时可能会导致目标库占用的存储空间比源库大5%~10%。
DTS将尝试恢复在七天内运行失败的实例。因此,在业务切换至目标实例之前,请务必结束或释放该实例,或回收DTS访问目标数据库所使用账号的写权限,以避免该实例被自动恢复后导致目标数据库的数据被覆盖。
若实例运行失败,DTS技术支持人员将在8小时内尝试恢复该实例。在恢复失败实例的过程中,可能会对该实例进行重启、调整参数等操作。
说明在调整参数时,仅会修改实例的参数,不会对数据库中的参数进行修改。可能修改的参数,包括但不限于修改实例参数中的参数。
双向同步实例注意事项及限制
仅支持两个数据库之间的双向同步,暂不支持多个数据库之间的双向同步。
暂不支持跨境的双向同步。
为保障双向同步实例的稳定性,仅正向任务支持同步DDL操作,反向任务不支持同步DDL操作。
双向同步任务时,DTS会在源和目标库中建立数据库
dts
,以避免数据循环同步,任务运行期间,请勿修改该库。dts
库可能会影响MySQL正常的主备同步,建议检查备库中是否存在dts
库及相关表。若不存在,您需按照主库中dts
的库表结构手动在备库中创建。当前仅RDS MySQL实例间、PolarDB MySQL版集群间、Tair(企业版)实例间、云数据库MongoDB版(副本集架构)间、云数据库MongoDB版(分片集群架构)间,支持跨账号的双向同步任务。
双向同步实例包含正向和反向同步任务,在配置或重置双向同步实例时,若其中一个任务的目标对象是另一个任务待同步的对象:
仅允许其中一个任务同步全量和增量数据,另一个任务仅支持同步增量数据。
当前任务的源数据仅支持同步到当前任务的目标库,同步过来的数据不会作为另一个任务的源数据继续同步。
配置反向同步任务时,您需要选择正确的源和目标实例。反向同步中源实例为正向同步中的目标实例,目标实例为正向同步中的源实例,并且您还需仔细确认实例信息(如数据库名称、账号、密码)的一致性。
反向同步任务源库和目标库的实例地区不支持修改,且需要配置的参数比正向同步任务少,请以控制台界面为准。
反向同步任务的目标已存在表的处理模式配置不检测正向同步任务同步至目标实例中的表。
反向同步任务不支持同步正向任务已选择对象中的对象。
反向任务配置时不建议您使用映射功能,否则会存在数据不一致的风险。
迁移实例注意事项及限制
迁移实例的付费方式仅支持按量付费(后付费)。
若您需要配置源库与目标库地域不同(跨境或跨地域)的迁移实例,源库和目标库需要满足如下条件:
若源库的接入方式为云实例,则源库需要开通外网地址。
若源库的接入方式不为云实例,则目标库需要开通外网地址。