如何解决全量迁移慢或迁移卡住

本文介绍DTS全量同步或迁移慢的常见原因,以及相应的解决方法。您可以逐一排查这些原因,并根据解决方法恢复任务。

问题现象

DTS在全量数据同步或迁移阶段时,可能会出现耗时很久的现象,或者出现任务卡住的迹象。

可能原因

  • 源库待同步或迁移的数据量大或无主键。

  • 源库创建了多个DTS任务。

  • 源或目标库连接异常。例如,数据库设置了白名单、账号权限不足、账号密码错误等。

  • 源或目标库的性能、网络延时、网络带宽等原因。

  • 目标库不支持写入数据。例如,目标库为只读数据库、磁盘已满、存在死锁情况等。

排查方法

您可以根据如下方法进行排查:

  • 排查源库:

    • 预估迁移时间:

      1. 排查源库待迁移对象的数据量级。

      2. 尝试迁移部分表,用作基础评估时间,比如10G数据量完成迁移的时长,以此来预估整体迁移时间。

    • 排查任务并行情况:检查是否同时建立了多个任务。

      说明

      多任务并行可能造成一时性的资源紧张,建议分批分时段建立任务。

    • 排查账号密码准确性:检查源库的用户名及密码是否正确。

      使用配置任务时指定的用户名和密码从远程连接访问源库,测试数据库能否连通。以MySQL数据库为例,建立连接的命令为mysql -h<源库IP或者域名> -P<源库端口号> -u<用户名> -p<密码>

    • 排查白名单设置:如源库为自建库,您可以检查源库的安全设置中是否已完整添加DTS服务器的IP白名单。参见:添加DTS服务器的IP地址段

    • 排查主键和索引情况:检查源库大表是否都有主键或唯一索引。以MySQL数据库为例,您可输入命令show create table <数据库名>.<表名>;,查询源库大表是否都有主键或唯一索引。

      说明

      普通索引或无索引可能会出现多数据现象。

  • 排查目标库:

    • 排查账号密码准确性:检查目标库的用户名及密码是否正确。

      使用配置任务时指定的用户名和密码从远程连接访问目标库,测试数据库能否连通。以MySQL数据库为例,建立连接的命令为mysql -h<目标库IP或者域名> -P<目标库端口号> -u<用户名> -p<密码>

    • 排查白名单设置:如目标库为自建库,您可以检查目标库的安全设置中是否已完整添加DTS服务器的IP白名单。参见:添加DTS服务器的IP地址段

    • 排查实例类型:检查目标库实例是否为只读实例(不支持写入)。

      以MySQL数据库为例,您可以通过如下命令查询并修改数据库状态。

      1. 输入命令show global variables like '%read_only%'; ,如返回read_only及super_read_only为ON,则表示MySQL数据库设置为只读。

      2. 输入如下命令,将MySQL从只读状态设置为读写状态。

        unlock tables;
        set global read_only=0;
      说明

      如MySQL数据库为只读状态,则read_only参数设置为1或TRUE;如MySQL数据库为读写状态,则read_only参数设置为0或FALSE。更多信息,请参见MySQL官网

    • 排查磁盘空间:检查目标库的磁盘空间是否已满。

      以RDS MySQL实例为例,您可以在RDS MySQL控制台查看存储空间的使用情况。查看方式,请参见RDS MySQL空间不足问题

    • 排查性能负荷情况:检查目标库的负荷状况,是否达到了性能瓶颈。

      以目标实例为RDS MySQL为例,您可以在RDS控制台的监控与报警页面查看实例的CPU、内存、I/O等资源负载情况,并对照相应的实例规格,确认是否达到实例规格的限制。查看方式,请参见查看监控信息RDS MySQL标准版(原X86)主实例规格列表

    • 排查死锁情况:检查目标库是否存在死锁。

      以MySQL数据库为例,您可通过如下命令查询、删除死锁。

      1. 查看是否锁表:show OPEN TABLES whereIn_use > 0;

      2. 查询锁表或者慢SQL进程:SHOW PROCESSLIST;

      3. 删除该进程:KILL [CONNECTION | QUERY]thread_id

      说明

      出现死锁,会导致数据无法写入。

  • 排查网络:检查网络的连通性是否正常,网络带宽是否存在限制,在条件允许的情况下建议升级带宽。

    说明

    您可以通过OS命令(如ping, telnet等)或使用第三方工具测试网络的连通性及网络延时。

更多信息

增量任务延迟的解决方案,请参见如何解决增量迁移延迟或同步延迟

说明

若本文无法解决您的问题,您可以通过钉钉(钉钉通讯客户端下载地址)进入到DTS客户交流钉钉群(群号:68325004196或68640008972),进行咨询。