文档首页/ 数据复制服务 DRS/ 用户指南(吉隆坡区域)/ 常见问题/ 网络及安全/ 如何处理迁移实例和数据库网络连接异常
更新时间:2022-08-16 GMT+08:00

如何处理迁移实例和数据库网络连接异常

数据迁移前请确保完成网络准备和安全规则设置。如果连接异常,请按照本节方法排查网络配置是否正确。

本节将以MySQL到RDS for MySQL的迁移为示例,从三种迁移场景(跨云数据库实时迁移、本地数据库实时迁移、ECS自建数据库实时迁移)进行说明。

跨云数据库实时迁移

  1. 网络准备。
    源数据库需要开放公网访问。
    • 源数据库的网络设置:

      源数据库MySQL实例需要开放外网域名的访问。

      具体的操作及注意事项可以参考源数据库所在云提供的相关指导。

    • 目标数据库的网络设置:

      目标数据库默认与DRS迁移实例处在同一个VPC内,网络是互通的,不需要进行任何设置。

  2. 安全规则准备。
    • 源数据库的安全规则设置:

      源数据库MySQL实例需要将目标端DRS迁移实例的弹性公网IP添加到其网络白名单中,确保源数据库MySQL实例可以与上述弹性公网IP连通。

      在设置网络白名单之前,需要先获取目标端DRS迁移实例的弹性公网IP,具体方法如下:DRS迁移实例创建成功后,可在“源库及目标库”页面获取DRS迁移实例的弹性公网IP。

      以上讲述的是精细配置白名单的方法,还有一种简单设置白名单的方法,在安全允许的情况下,可以将源数据库MySQL实例的网络白名单设置为0.0.0.0/0,代表允许任何IP地址访问该实例。

      上述的网络白名单是为了进行数据迁移设置的,迁移结束后可以删除。

    • 目标数据库安全规则设置:

      目标数据库默认与DRS迁移实例处在同一个VPC,网络是互通的,DRS可以直接写入数据到目标数据库,不需要进行任何设置。

本地数据库实时迁移

  1. 网络准备:
    • 源数据库的网络设置:

      本地MySQL数据库实时迁移至本云云数据库 RDS for MySQL的场景,一般可以使用VPN网络和公网网络两种方式进行迁移,您可以根据实际情况为本地MySQL数据库开放公网访问或建立VPN访问。一般推荐使用公网网络进行迁移,该方式下的数据迁移过程较为方便和经济。

    • 目标数据库的网络设置:
      • 若通过VPN访问,确保源数据库MySQL和目标端本云云数据库 RDS for MySQL的网络互通。
      • 若通过公网网络访问,本云云数据库 RDS for MySQL实例不需要进行任何设置。
  2. 安全规则准备:
    1. 源数据库的安全规则设置:
      • 若通过公网网络进行迁移,源数据库MySQL需要将DRS迁移实例的弹性公网IP添加到其网络白名单内,使源数据库与本云的网络互通。在设置网络白名单之前,需要获取DRS迁移实例的弹性公网IP,具体方法如下:

        DRS迁移实例创建成功后,可在“源库及目标库”页面获取DRS迁移实例的弹性公网IP。

      • 若通过VPN网络进行迁移,源数据库MySQL需要将DRS迁移实例的私有IP添加到其网络白名单内,使源数据库与本云的网络互通。DRS迁移实例创建成功后,可在“源库及目标库”页面获取DRS迁移实例的私有IP。

      以上白名单是为了进行迁移针对性设置的,迁移结束后可以删除。

    2. 目标数据库安全规则设置:

      目标数据库默认与DRS迁移实例处在同一个VPC,网络是互通的,DRS可以直接写入数据到目标数据库,不需要进行任何设置。

ECS自建数据库实时迁移

  1. 网络准备:
    • 源数据库所在的region要和目标端本云云数据库 RDS for MySQL实例所在的region保持一致。
    • 源数据库可以与目标端本云云数据库 RDS for MySQL实例在同一个VPC,也可以不在同一个VPC。
      • 当源库和目标库处于同一个VPC时,网络默认是互通的。
      • 当不在同一个VPC的时候,要求源数据库实例和目标端本云云数据库 RDS for MySQL实例所处的子网处于不同网段,此时需要通过建立对等连接实现网络互通。
  2. 安全规则准备:
    • 同一VPC场景下,默认网络是连通的,不需要单独设置安全组。
    • 不同VPC场景下,通过建立对等连接就可以实现网络互通,不需要单独设置安全组。

排查iptables设置

以源数据库为本云ECS自建数据库为例,如果在上述的操作后,仍无法连通,此时需要额外排查iptables设置,因为HOSTGUARD服务在DRS发起频繁连接请求失败时,会将请求IP加入黑名单中。
  1. 登录弹性云服务器。
  2. 执行以下命令,排查是否有DENY相关的项目包含DRS实例的IP,一般项目名称为IN_HIDS_MYSQLD_DENY_DROP 。

    iptables --list

  3. 如果存在,执行以下命令,查询iptables入方向规则列表,获取具体规则编号(line-numbers)。

    iptables -L INPUT --line-numbers

  4. 执行以下命令,删除DRS实例的IP相关的入方向规则(注意:必须从后往前删,不然line-numbers会更新,需要重新查询)。

    iptables -D 规则项目名 具体规则编号

  5. 删除相关iptables规则后重新进行测试连接即可。