tencent cloud

文档反馈

连通性测试不通过

最后更新时间:2024-03-20 16:57:03

    问题现象

    用户在创建迁移、同步或订阅任务时,源数据库或者目标数据库连通性测试失败。

    可能原因

    Telnet 测试不通过,可能原因如下。
    Telnet 测试通过,Database Connect 失败,可能原因如下。

    源数据库所在网络或服务器设置了安全组或者防火墙

    安全组功能与防火墙功能类似,安全组是针对云上数据库的网络安全设置。
    请根据现场情况,进行以下检查步骤:
    源库为自建数据库,请检查源数据库所在的服务器是否配置了防火墙策略,如果有请关闭防火墙。
    Windows 系统:打开控制面板找到 Windows 防火墙,查看是否配置了防火墙策略。
    Linux 系统:请执行 iptables -L 命令,检查服务器是否配置了防火墙策略。
    源库为腾讯云数据库,请检查源数据库配置的安全组是否限制了 DTS 的 IP 地址段,如果有请参考如下指导修改。 连通性测试异常时,界面会提示需要放开的 DTS 的 IP 地址段,具体如下所示。
    1. 登录源数据库(如下以 MySQL 为例),在实例列表,单击实例 ID,进入实例管理页面。
    2. 在实例管理页面,选择安全组页,查看是否存在禁止 DTS 的 SNAT IP 地址段的策略。
    
    3. 修改 DTS 的 IP 地址段的策略,配置为允许
    
    如果源库为第三方云厂商数据库,请检查相关安全组设置。

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

    检测方法

    MySQL 检测方法

    在源数据库部署的服务器上,使用数据迁移任务中填入的数据库账号和数据库密码连接源数据库。如果连接正常,说明源数据库可能限制了来源 IP 地址。
    如果是自建数据库,需要在数据库上确认 bind-address 的配置,如果不是0.0.0.0,则 IP 受限。
    如果源数据库为 MySQL,您可以使用 MySQL 客户端连接源数据库,执行以下 SQL 语句进行检查,检查输出结果中的授权 IP 地址列表中是否包含 DTS 的 SNAT IP 地址。 在给用户进行数据库的授权时,授权的 IP 中需要包含 SNAT IP,否则会发生 IP 受限问题。示例如下:
    root@10.0.0.0/8 //授权用户通过指定10.0.0.0/8访问,其他 IP 会受限(错误配置)
    root@% //授权用户访问所有的 IP,其中需要包含 SNAT IP(正确配置)
    您可以通过如下方法验证。
    select host,user,authentication_string,password_expired,account_locked from
    mysql.user WHERE user='[\\$Username]'; //[\\$Username]为数据迁移任务中填写的数据库账号

    SQL Server 检测方法

    检查源数据库中是否有 Endpoint 或 Trigger 限制了访问来源 IP 地址。

    PostgreSQL 检测方法

    如果源端数据库为其他云数据库时,请首先检查源端云数据库实例的安全访问策略是否有所限制。请根据不同云厂商的限制方法来进行检查。
    如果源端数据库为自建的 PostgreSQL 数据库,请进入 $PGDATA 目录下的 data 目录,找到 pg_hba.conf 文件。查看此文件中是否存在 deny 策略,或者仅允许部分网络端的 IP 地址访问。
    # cat pg_hba.conf
    local replication all trust
    host replication all 127.x.x.1/32 trust
    host replication all ::1/128 trust
    host all all 0.0.0.0/0 md5
    host all all 172.x.x.0/20 md5

    MongoDB/Redis 检测方法

    如果是自建数据库,需要在数据库上确认 bind 的配置,如果不是0.0.0.0,则 IP 受限。

    修复方法

    MySQL 修复方法

    1. 源数据库为 MySQL,请在源数据库中执行以下 SQL 语句,重新给数据迁移使用的用户授权。
    mysql> grant all privileges on . to '[\\$UserName]'@'%'; //[\\$Username] 为数据迁移任务中填写的数据库账号
    mysql> flush privileges;
    2. 如果源数据库为自建数据库,还需要确认 bind-address 配置,如果配置异常,请参考如下指导修改。 2.1. 在 /etc/my.cnf 文件中增加如下内容。
    说明:
    my.cnf 配置文件的默认路径为 /etc/my.cnf,现场以实际情况为准。
    bind-address=0.0.0.0 #全部地址或者指定的 IP 地址
    2.2. 重启数据库。
    service mysqld restart
    2.3. 验证配置是否生效。
    netstat -tln
    3. 重新执行校验任务。

    SQL Server 修复方法

    关闭防火墙或禁用 trigger。

    PostgreSQL 修复方法

    1. 请在pg_hba.conf文件中加入允许 DTS 网络段的访问策略。或者在迁移过程中临时放开所有网段的访问策略。如在此文件中添加一行:
    host all all 0.0.0.0/0 md5
    2. 修改完成后,可重启数据库实例,让配置生效:
    pg_ctl -D $PGDATA restart
    3. 重新执行校验任务。

    MongoDB 修复方法

    参考 MySQL 中的方法配置 bind-address。

    Redis 修复方法

    1. redis.conf 中关闭 bind 配置,或者将 bind 配置修改为0.0.0.0
    2. 重启数据库让配置生效,然后重新执行校验任务。

    网络端口未放通

    常见数据库默认端口如下,需要确认这些端口已放通。如果用户修改了默认端口,请按实际情况修改放通的端口。
    如果源数据库为 SQL Server,还需要同时放通文件共享服务端口445。
    MySQL:3306
    SQL Server:1433
    PostgreSQL:5432
    MongoDB:27017
    Redis:6379

    网络冲突问题

    选择 VPN/专线 接入、云联网 接入方式的可以参考相应链接指导进行检查。

    迁移账号授权问题

    请参考 数据迁移数据同步 中的对应场景,重新对迁移账号授权。

    数据库账号或密码不正确

    登录源数据库,验证账号和密码是否正确。

    对接入类型进行了修改

    对于同一个源库和目标库,选择了一种接入类型(如“公网”)进行连通性校验通过后,不能再切换为其他的接入类型(如“公网”切换为“专线接入”),否则 DTS 后端网络代理识别异常,导致连通性校验报错。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持