DRS全量阶段迁移过慢或者进度不更新可能原因
问题现象
DRS在进行全量迁移时,出现迁移耗时很久或者迁移任务进度不更新的情况。
排查方法
- 排查源库迁移数据大小:
数据迁移进度是按表数量来计算百分比,当数据迁移进度长时间不更新,可能因为有某几个表数据量过大,迁移时间较长。可以在“进度明细”下,单击目标迁移对象“详细信息”列的“查看详情”,查看具体对象的迁移进度。
- 排查源库表主键和索引情况:
源库大表缺少主键和非空唯一索引,以MySQL为例,可以在源库执行show create table <数据库名>.<表名>查询是否有主键或非空唯一索引。
- 排查源库是否有结束长连接现象:
- 排查目标库索引迁移:
索引迁移进度长时间不更新,可能是某些大表的索引创建比较慢,目标库一直在创建索引中。可以登录目标库,执行show processlist查看DRS在目标库的执行情况。
- 排查目标库是否有死锁:
目标库如果有死锁,可能导致全量数据无法写入。以MySQL为例,可执行以下命令查看、删除死锁。
- 查看是否锁表:show OPEN TABLES where In_use > 0;。
- 查看锁表进程:show processlist;。
- 删除锁表的进程:KILL [CONNECTION | QUERY] <thread_id>。
- 排查源库和目标库网络连接:
- 检查DRS任务是否设置限速: