为保障数据迁移任务的顺利执行,在预检查阶段检查DTS服务器是否能够连通要迁移的目标数据库。本文将介绍目标数据库连接性检查失败可能的原因及修复方法。
当目标数据库连接性预检查失败时,可能是以下几种原因。
数据库账号或数据库密码不正确
检测方法:
在任何一台可以连接目标数据库的设备上,使用数据迁移任务中填入的数据库账号和数据库密码来连接目标数据库,验证数据库账号和数据库密码是否正确。
您也可以直接在目标数据库部署的服务器上验证数据库账号和数据库密码是否正确。
修复方法:
登录数据传输控制台,修改数据迁移任务,填入正确的数据库账号和数据库密码后重新执行预检查。
若目标端为Tair/Redis,请根据选取的账号(需要具备读写权限)填写密码:
默认账号(即以实例ID命名的账号):直接填写密码即可。
新创建的账号:密码格式为
<自定义账号>:<密码>
,例如:Redis实例自定义的用户名为admin,密码为Rp829dlwa,则此处填入的数据库密码为admin:Rp829dlwa。
目标数据库对来源IP进行了限制
检测方法:
您可以直接在目标数据库部署的服务器上,使用数据迁移任务中填入的数据库账号和数据库密码来连接目标数据库。如果连接正常,说明可能目标数据库可能限制了来源IP。
如果目标数据库为MySQL,您可以使用MySQL客户端连接目标数据库后执行下述命令进行检查。
SELECT HOST FROM mysql.user WHERE user='username',password='password';
说明将username和password替换为数据迁移任务中填写的数据库账号和数据库密码。
检查输出结果中的授权IP地址列表中是否包含DTS的IP地址,关于DTS迁移时所使用IP地址信息,请参见迁移、同步或订阅本地数据库时需添加的IP白名单。
如果目标数据库为SQL Server,那么检查SQL Server安装服务器上是否设置了防火墙,或者检查目标数据库中是否有endpoint或trigger限制了访问来源IP。
如果目标数据库为Oracle,那么检查目标数据库的配置文件sqlnet.ora,确认配置项
TCP.VALIDNODE_CHECKING
是否为yes
。如果为yes
,说明目标数据库限制了访问来源IP。
修复方法:
如果目标数据库为MySQL,您可以在目标数据库中执行以下命令为数据迁移使用的数据库账号重新授权。
GRANT ALL ON *.* TO 'username'@''%' IDENTIFIED BY 'password';
说明将username和password替换为数据迁移任务中填写的数据库账号和数据库密码。
如果目标数据库为SQL Server,关闭掉防火墙或禁用掉trigger。
如果目标数据库为Oracle,修改
TCP.VALIDNODE_CHECKING
为no
并重启进程。
执行了上述修复操作后,登录数据传输控制台,重新执行预检查。
目标数据库服务器设置了防火墙
检测方法:
如果安装目标数据库的服务器为Windows,那么在控制面板中查找到Windows防火墙,查看是否配置了防火墙。
如果安装目标数据库的服务器为Linux,那么在Shell中使用
iptables -L
命令检查服务器是否配置了防火墙。
修复方法:
关闭相关防火墙限制后,登录数据传输控制台,重新执行预检查。
网络互通问题
经过上述排查后仍然无法通过目标数据库连接性检查,可能是DTS服务器与目标数据库网络互通问题。