为保障数据迁移任务的顺利执行,在预检查阶段检查DTS服务器是否能够连通要迁移的源数据库。本文将介绍源库连接性检查失败可能的原因及修复方法。

当源库连接性预检查失败时,可能是以下几种原因。

数据库账号或数据库密码不正确

检测方法:

在任何一台可以连接源数据库的设备上,使用数据迁移任务中填入的数据库账号和数据库密码来连接源数据库,验证数据库账号和数据库密码是否正确。
说明 您也可以直接在源数据库部署的服务器上验证数据库账号和数据库密码是否正确。

修复方法:

登录数据传输控制台,修改数据迁移任务,填入正确的数据库账号和数据库密码后重新执行预检查。

源数据库对来源IP进行了限制

检测方法:

  • 您可以直接在源数据库部署的服务器上,使用数据迁移任务中填入的数据库账号和数据库密码连接源数据库来连接数据。如果连接正常,说明源数据库可能限制了来源IP。
  • 如果源数据库为MySQL,您可以使用MySQL客户端连接源数据库后执行下述命令进行检查。
    SELECT HOST FROM mysql.user WHERE user='username',password='password';
    说明usernamepassword替换为数据迁移任务中填写的数据库账号和数据库密码。

    检查输出结果中的授权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';
    说明usernamepassword替换为数据迁移任务中填写的数据库账号和数据库密码。
  • 如果源数据库为SQL Server,关闭掉防火墙或禁用掉trigger。
  • 如果源数据库为Oracle,修改TCP.VALIDNODE_CHECKINGno并重启进程。

执行了上述修复操作后,登录数据传输控制台,重新执行预检查。

源数据库服务器设置了防火墙

检测方法:

  • 如果安装源数据库的服务器为Windows,那么在控制面板中查找到Windows防火墙,查看是否配置了防火墙。
  • 如果安装源数据库的服务器为Linux,那么在shell中使用iptables -L命令检查服务器是否配置了防火墙。

修复方法:

关闭相关防火墙限制后,登录数据传输控制台,重新执行预检查。

网络互通问题

经过上述排查后仍然无法通过源库连接性检查,可能是DTS服务器与源数据库网络互通问题,您可以通过提交工单的形式联系阿里云工程师协助解决。