概述
配置数据迁移任务时,可以进行数据库连接测试,很多时候会遇到测试连接失败。本文根据不同的实例类型介绍可能失败的原因及对应的解决方案。
详细信息
当连接性预检查失败时,可能是由于如下原因:
诊断内容 | 可能原因 | 解决方法 |
JDBC |
|
|
Ping |
|
|
Telnet |
|
|
当DTS测试连接失败时,你需要先通过数据库客户端连接数据库,验证数据库的存活性及数据库连接信息的正确性。如果数据库正常存活且连接信息没有问题,那么通过下面的方法解决问题:
有公网IP的自建数据库
根据以下不同的测试结果,进行相应的处理。
测试结果一
问题现象
测试连接时,使用ping
命令测试网络不通,使用telnet
命令测试端口不通,且JDBC不通。
问题原因
可能对数据库进行了访问来源限制,例如,在数据库上进行了iptables限制。
解决方法
请登录数据库所在服务器,通过执行
iptables -L
命令,确认是否设置了iptables。如果设置了iptables,那么请根据迁移任务的目标实例所在区域,选择对应区域的DTS IP地址段,在iptables中放开DTS的访问限制。若您所在的网络环境有硬件防火墙,请确认硬件防火墙没有进行限制。
若以上检查都没有问题,请检查下您的路由是否正常。
测试结果二
问题现象
测试连接时,使用ping
命令测试网络正常,使用telnet
命令测试端口不通,且JDBC不通。
问题原因
可能对数据库的端口进行了访问来源限制,例如在数据库端口上进行了iptables或ACL限制。
解决方法
请根据迁移任务的目标实例所在区域,选择对应区域的DTS IP地址段,在iptables或ACL中放开DTS访问数据库的限制。
若您所在的网络环境有硬件防火墙,请确认硬件防火墙没有进行限制。
若以上检查都没有问题,请检查下您的路由是否正常。
测试结果三
问题现象
测试连接时,使用ping
命令测试网络正常,使用telnet
命令测试端口正常,但JDBC不通。
问题原因
可能是数据库账号密码填写有误,或者是数据库的IP、Port连接地址填写错误。
可能是数据库账号授权限制了连接地址。
ECS自建数据库没有自动添加11开头网段的路由(11开头网段的gateway需要与10开头网段的gateway相同)。
解决方法
请确认并修正数据库的连接信息。
请放开所有的连接地址。
使用
route -n
命令查看gateway信息,使用sudo route add -net 11.0.0.0/8 gw <10开头网段的gateway>
添加路由。
测试结果四
问题现象
测试连接时,使用ping
命令测试网络失败,使用telnet
命令测试端口正常,但JDBC不通。
问题原因
可能是您的禁止ping ECS实例,且数据库账号密码填写有误。
解决方法
修改ECS实例禁止ping的配置,例如iptables的
/proc/sys/net/ipv4/icmp_echo_ignore_all
的参数值(值为1,说明禁止ping ECS实例)。参见测试结果三,确认密码或授权的连接地址没有问题。
ECS上的自建数据库
根据以下不同的测试结果,进行相应的处理。
测试结果一
问题现象
测试连接时,使用ping
命令测试网络不通,使用telnet
命令测试端口不通,且JDBC不通。
问题原因
DTS无法访问ECS实例。
解决方法
可能在ECS上设置了iptables,限制了数据库的访问来源。登录ECS实例,执行如下命令,确认是否设置了iptables。如果返回iptables限制条目,那么请根据迁移任务的目标实例所在区域,选择对应区域的DTS IP地址段,在iptables中放开DTS访问限制。
iptables -L
登录ECS控制台,查看安全组是否限制了DTS的IP段。
测试结果二
问题现象
测试连接时,使用ping
命令测试网络正常,使用telnet
命令测试端口不通,且JDBC不通。
问题原因
可能ECS设置了安全组,限制了数据库端口的访问来源。
解决方法
请根据迁移任务的目标实例所在区域,选择对应区域的DTS IP地址段,登录ECS控制台,查看安全组是否限制了DTS的IP段。
测试结果三
问题现象
测试连接时,使用ping
命令测试网络正常,使用telnet
命令测试端口正常,但JDBC不通。
问题原因
可能是数据库账号密码填写有误,或者是数据库的IP、Port连接地址填写错误。
可能是数据库账号授权限制了连接地址。
解决方法
请确认并修正数据库的连接信息。
请放开所有的连接地址。
测试结果四
问题现象
测试连接时,使用ping
命令测试网络失败,使用telnet
命令测试端口正常,但JDBC不通。
问题原因
可能是您的禁止ping ECS实例,且数据库账号密码填写有误。
解决方法
修改ECS实例禁止ping的配置,例如iptables的
/proc/sys/net/ipv4/icmp_echo_ignore_all
的参数值(值为1,说明禁止ping ECS实例)。参见测试结果三,确认密码或授权的连接地址没有问题。
通过专线接入的本地DB
专线接入,需要进行本地IDC接入设备上的静态路由、云上边界路由器上的路由表的配置,请参考专线接入使用手册,确认路由配置是否正确。
云实例
可能是数据库账号密码填写有误,请确认并修正。