DTS在执行数据同步作业之前,会对源库和目标执行预检查,本文介绍各类检查项失败可能的原因及修复方法。

预检查项目 失败可能的原因 修复方法

源库连接性检查

目标库连接性检查

数据库账号或密码不正确。 获取到正确的密码,然后修改同步作业中配置的源或目标库的数据库密码,详情请参见修改数据库密码
源或目标库对来源IP进行了限制。
  • 源或目标库为MySQL:为数据库账号重新授权,授权IP地址列表需包含DTS服务器的IP地址。关于如何选择DTS服务器的IP地址,请参见迁移、同步或订阅本地数据库时需添加的IP白名单
  • 源或目标库库为SQL Server:关闭防火墙或禁用trigger。
  • 源或目标库库为Oracle:修改TCP.VALIDNODE_CHECKING的值为no并重启进程。
源或目标库所属的服务器设置了防火墙。 关闭相关防火墙限制。
DTS服务器与源或目标库的网络互通问题。 您可以通过提交工单的形式联系阿里云工程师协助解决。
源库版本检查 DTS不支持该版本的数据库,DTS支持数据库版本信息请参见支持的数据库、同步初始化类型和同步拓扑 升级或降级数据库版本。
数据库存在性检查 当待同步的数据库在目标实例中不存在,由DTS自动创建时,可能由于下述原因导致创建失败:
  • 数据库名包含小写字母、数字、下划线(_)或中划线(-)以外的其他特殊字符。
  • 数据库的字符集为utf8、GBK、latin1或utf8mb4以外的字符集。
  • 数据同步作业中配置的目标数据库账号权限不足。
手动在目标实例中创建满足要求的数据库或调整数据库账号。
源库权限检查 数据同步作业中配置的数据库账号的权限不足。
说明 不同类型数据库所需的权限不同,详情请参见具体的配置案例:DTS数据同步方案概览
调整数据库账号的权限。
目标库权限检查
同名对象存在性检查 目标库存在和待同步对象同名的对象,例如库名或表名相同。
源库server_id检查 server-id设置的不是大于等于2的整数。 登录源库,调整server-id的值,详情请参见源库server-id检查
源库Binlog开启检查 源库没有开启Binlog功能。 登录源库,开启Binlog功能,详情请参见源库binlog是否开启检查
源库Binlog模式检查 源库的Binlog模式没有设置为ROW。 登录源库执行命令set global binlog_format='ROW';,然后重启MySQL进程。
约束完整性检查 待同步子表依赖的父表没有被选择为同步对象,从而破坏了外键约束完整性。
  • 删除约束完整性检查失败的子表的外键依赖。
  • 在同步对象中加入相应父表,详情请参见新增同步对象
  • 从同步对象中移除相应子表,详情请参见移除同步对象
存储引擎检查 待同步表的存储引擎为FEDERATED、MRG_MyISAM或TokuDB。 登录源库,将表的存储引擎修改为InnoDB。
字符集检查 DTS不支持同步对象的字符集(例如UCS2)。 登录源库,将表的字符集修改为utf8、GBK、latin1或utf8mb4。
复杂拓扑存在性检查 DTS不支持源和目标实例组成的拓扑,DTS支持的拓扑及注意事项请参见数据同步拓扑介绍 结束或等待冲突的任务完成后再执行数据同步。
MySQL密码格式检查 源库使用数据库密码格式是否为老版。 调整数据库密码的格式,详情请参见old_passwords