DTS在执行数据同步作业之前,会对源库和目标执行预检查,本文介绍各类检查项失败可能的原因及修复方法。
预检查项目 | 失败可能的原因 | 修复方法 |
---|---|---|
源库连接性检查 目标库连接性检查 | 数据库账号或密码不正确。 | 获取到正确的密码,然后修改同步作业中配置的源或目标库的数据库密码,详情请参见修改数据库密码。 |
源或目标库对来源IP进行了限制。 |
| |
源或目标库所属的服务器设置了防火墙。 | 关闭相关防火墙限制。 | |
源库版本检查 | DTS不支持该版本的数据库,DTS支持数据库版本信息请参见同步方案概览。 | 升级或降级数据库版本。 |
数据库存在性检查 | 当待同步的数据库在目标实例中不存在,由DTS自动创建时,可能由于下述原因导致创建失败:
| 手动在目标实例中创建满足要求的数据库或调整数据库账号。 |
源库权限检查 | 数据同步作业中配置的数据库账号的权限不足,例如检查项为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。 |