问题描述

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

 

问题原因

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

 

解决方案

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

检测方法

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

 

修复方法

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

 

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

检测方法

  • 您可以直接在目标数据库部署的服务器上,使用数据迁移任务中填入的数据库账号和数据库密码连接目标数据库。如果连接正常,说明目标数据库可能限制了来源IP。
  • 如果目标数据库为MySQL,您可以使用MySQL客户端连接目标数据库后执行如下SQL语句进行检查。检查输出结果中的授权IP地址列表中是否包含DTS的IP地址,关于DTS迁移时所使用IP地址信息,请参见迁移/同步/订阅本地数据库时需添加的IP白名单
    SELECT HOST FROM mysql.user WHERE user='[$Username]',password='[$Password]';
    注:将[$Username]和[$Password]替换为数据迁移任务中填写的数据库账号和数据库密码。
  • 如果目标数据库为SQL Server,那么检查SQL Server的安装服务器上是否设置了防火墙,或者检查目标数据库中是否有endpoint或trigger限制了访问来源IP。
  • 如果目标数据库为Oracle,那么检查目标数据库的sqlnet.ora配置文件,检查配置项TCP.VALIDNODE_CHECKING是否为yes。如果为yes,说明目标数据库限制了访问来源IP。

 

修复方法

  1. 根据不同类型的目标数据库,选择对应的修复方法进行修复。
    • 如果目标数据库为MySQL,您可以在目标数据库中执行如下SQL语句,为数据迁移使用的数据库账号重新授权。
      GRANT ALL ON . TO 'username'@''%' IDENTIFIED BY '[$Password]';
      注:将[$Username]和[$Password]替换为数据迁移任务中填写的数据库账号和数据库密码。
    • 如果目标数据库为SQL Server,关闭防火墙或禁用trigger。
    • 如果目标数据库为Oracle,修改TCP.VALIDNODE_CHECKINGno,并重启进程。
  2. 执行了上述修复操作后,登录数据传输控制台,重新执行预检查。

 

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

检测方法

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

 

修复方法

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

 

网络互通存在问题

经过上述排查后仍然无法通过目标数据库连接性检查,可能是DTS服务器与目标数据库网络互通存在问题,您可以通过提交工单联系阿里云技术支持进行协助解决。

 

适用于

  • 数据传输服务 DTS

 

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。