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

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

源库连接性检查

目标库连接性检查

数据库账号或密码不正确。获取到正确的密码,然后修改同步作业中配置的源或目标库的数据库密码,详情请参见修改数据库密码
源或目标库对来源IP进行了限制。
  • 源或目标库为MySQL:为数据库账号重新授权,授权IP地址列表需包含DTS服务器的IP地址。关于如何选择DTS服务器的IP地址,请参见迁移、同步或订阅本地数据库时需添加的IP白名单
  • 源或目标库为SQL Server:关闭防火墙或禁用trigger。
  • 源或目标库为Oracle:修改TCP.VALIDNODE_CHECKING的值为no并重启进程。
源或目标库所属的服务器设置了防火墙。关闭相关防火墙限制。
源库版本检查DTS不支持该版本的数据库,DTS支持数据库版本信息请参见同步方案概览升级或降级数据库版本。
数据库存在性检查当待同步的数据库在目标实例中不存在,由DTS自动创建时,可能由于下述原因导致创建失败:
  • 数据库名包含小写字母、数字、下划线(_)或中划线(-)以外的其他特殊字符。
  • 数据库的字符集为utf8、GBK、latin1或utf8mb4以外的字符集。
  • 数据同步作业中配置的目标数据库账号权限不足。
手动在目标实例中创建满足要求的数据库或调整数据库账号。
源库权限检查数据同步作业中配置的数据库账号的权限不足,例如检查项为dts.precheck.Unexpected error时检查失败。
说明 不同类型数据库所需的权限不同,详情请参见具体的配置案例: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