问题描述
为保障数据迁移任务的顺利执行,在预检查阶段需要检查DTS服务器是否能够连通迁移的源数据库。本文主要介绍源数据库连接性检查失败可能的原因及修复方法。
问题原因
当源数据库连接性预检查失败时,可能是以下几种原因:
数据库账号或密码不正确
检测方法
在任何一台可以连接源数据库的设备上,使用数据迁移任务中填入的数据库账号和密码连接源数据库,验证数据库账号和密码是否正确。
说明:您也可以直接在源数据库部署的服务器上验证数据库账号和密码是否正确。
修复方法
登录数据传输控制台,修改数据迁移任务,输入正确的数据库账号和密码后重新执行预检查。
源数据库对来源IP地址进行了限制
检测方法
- 您可以直接在源数据库部署的服务器上,使用数据迁移任务中填入的数据库账号和数据库密码连接源数据库。如果连接正常,说明源数据库可能限制了来源IP地址。
- 如果源数据库为MySQL,您可以使用MySQL客户端连接源数据库,执行以下SQL语句进行检查,检查输出结果中的授权IP地址列表中是否包含DTS的IP地址。
说明:关于DTS迁移时所使用IP地址信息,请参见 迁移、同步或订阅本地数据库时需添加的IP白名单。
select host,user,authentication_string,password_expired,account_locked from mysql.user WHERE user='[$Username]';
说明:[$Username]为数据迁移任务中填写的数据库账号。
- 如果源数据库为SQL Server,检查安装SQL Server的服务器上是否设置了防火墙,或者检查源数据库中是否有Endpoint或Trigger限制了访问来源IP地址。
- 如果源数据库为Oracle,检查源数据库的sqlnet.ora配置文件,确认
TCP.VALIDNODE_CHECKING
配置项的值是否为yes
。如果为yes
,说明源数据库限制了访问来源IP地址。
修复方法
- 根据不同类型的目标数据库,选择以下对应的修复方法进行修复:
- 如果源数据库为MySQL,您可以在源数据库中执行以下SQL语句,重新给数据迁移使用的数据库账号授权。
GRANT ALL ON *.* TO '[$UserName]'@'%' IDENTIFIED BY '[$PassWord]';
说明:[$Username]和[$Password]为数据迁移任务中填写的数据库账号和密码。
- 如果源数据库为SQL Server,关闭防火墙或禁用trigger。
- 如果源数据库为Oracle,请编辑
sqlnet.ora
配置文件,将TCP.VALIDNODE_CHECKING
配置项的值修改为no
并重启进程。
- 如果源数据库为MySQL,您可以在源数据库中执行以下SQL语句,重新给数据迁移使用的数据库账号授权。
- 执行了以上修复操作后,登录数据传输控制台,重新执行预检查。
源数据库所在网络或服务器设置了防火墙
检测方法
请根据现场情况,进行以下检查步骤:
- 查看源数据库所在的服务器是否开启了防火墙并配置了防火墙策略:
- 如果安装目标源数据库的服务器为Windows系统,打开控制面板找到Windows防火墙,查看是否配置了防火墙策略。
- 如果安装目标源数据库的服务器为Linux系统,请执行
iptables -L
命令,检查服务器是否配置了防火墙策略。
- 查看数据库所在的网络防火墙是否限制了DTS的IP地址段,本文以云防火墙为例进行介绍。
- 登录云防火墙控制台,在左侧导航栏单击 。
- 查看云防火墙是否存在禁止DTS的IP地址段的策略,DTS的IP地址段的信息请参见迁移、同步或订阅本地数据库时需添加的IP白名单。
修复方法
请根据现场情况,选择以下对应的步骤:
网络互通问题
经过以上排查后仍然无法通过源数据库连接性检查,可能是DTS服务器与源数据库网络互通问题,您可以提交工单联系阿里云技术支持协助。
适用于
- 数据传输服务DTS
如果您的问题仍未解决,您可以在阿里云社区提交工单联系阿里云技术支持。