
# DRS全量阶段迁移过慢或者进度不更新可能原因
#### 问题现象
DRS在进行全量迁移时，出现迁移耗时很久或者迁移任务进度不更新的情况。
#### 排查方法
- 排查源库迁移数据大小： 数据迁移进度是按表数量来计算百分比，当数据迁移进度长时间不更新，可能因为有某几个表数据量过大，迁移时间较长。可以在"进度明细"下，单击目标迁移对象"详细信息"列的"查看详情"，查看具体对象的迁移进度。
  
- 排查源库表主键和索引情况： 源库大表缺少主键和非空唯一索引，以MySQL为例，可以在源库执行show create table *\<数据库名\>.\<表名\>*查询是否有主键或非空唯一索引。
  
- 排查源库是否有结束长连接现象： 源库为其他云上数据库时，可能存在自动结束长连接的现象，导致全量迁移数据过慢或者进度不更新的情况。
  
- 排查目标库索引迁移： 索引迁移进度长时间不更新，可能是某些大表的索引创建比较慢，目标库一直在创建索引中。可以登录目标库，执行show processlist查看DRS在目标库的执行情况。
  
- 排查目标库是否有死锁： 目标库如果有死锁，可能导致全量数据无法写入。以MySQL为例，可执行以下命令查看、删除死锁。
  - 查看是否锁表：
    ```
    show OPEN TABLES where In_use > 0;
    ```
    
  
  - 查看锁表进程：
    ```
    show processlist;
    ```
    
  
  - 删除锁表的进程：
    ```
    KILL [CONNECTION | QUERY] <thread_id>
    ```
    
   
- 排查源库和目标库网络连接： 检查网络的连通性是否正常，网络带宽是否存在限制。可通过使用ping等OS命令测试网络的连通性及网络延迟。
  
- 检查DRS任务是否设置限速： 可单击任务名称，在"基本信息"页签的"限速信息"区域查看是否进行了全量限速。
  
 
