全部產品
Search
文件中心

Data Transmission Service:如何解決全量遷移慢或遷移卡住

更新時間:Jul 06, 2024

本文介紹DTS全量同步或遷移慢的常見原因,以及相應的解決方案。您可以逐一排查這些原因,並根據解決方案恢複任務。

問題現象

DTS在全量資料同步或遷移階段時,可能會出現耗時很久的現象,或者出現任務卡住的跡象。

可能原因

  • 源庫待同步或遷移的資料量大或無主鍵。

  • 源庫建立了多個DTS任務。

  • 源或目標庫串連異常。例如,資料庫設定了白名單、帳號許可權不足、帳號密碼錯誤等。

  • 源或目標庫的效能、網路延時、網路頻寬等原因。

  • 目標庫不支援寫入資料。例如,目標庫為唯讀資料庫、磁碟已滿、存在死結情況等。

排查方法

您可以根據如下方法進行排查:

  • 排查源庫:

    • 預估遷移時間:

      1. 排查源庫待遷移對象的資料量級。

      2. 嘗試遷移部分表,用作基礎評估時間,比如10G資料量完成遷移的時間長度,以此來預估整體遷移時間。

    • 排查任務並行情況:檢查是否同時建立了多個任務。

      說明

      多任務並行可能造成一時性的資源緊張,建議分批分時段建立任務。

    • 排查帳號密碼準確性:檢查源庫的使用者名稱及密碼是否正確。

      使用配置任務時指定的使用者名稱和密碼從遠端連線訪問源庫,測試資料庫能否連通。以MySQL資料庫為例,建立串連的命令為mysql -h<源庫IP或者網域名稱> -P<源庫連接埠號碼> -u<使用者名稱> -p<密碼>

    • 排查白名單設定:如源庫為自建庫,您可以檢查源庫的安全設定中是否已完整添加DTS伺服器的IP白名單。參見:將DTS伺服器的IP位址區段添加到自建資料庫的IP白名單

    • 排查主鍵和索引情況:檢查源庫大表是否都有主鍵或唯一索引。以MySQL資料庫為例,您可輸入命令show create table <資料庫名>.<表名>;,查詢源庫大表是否都有主鍵或唯一索引。

      說明

      普通索引或無索引可能會出現多資料現象。

  • 排查目標庫:

    • 排查帳號密碼準確性:檢查目標庫的使用者名稱及密碼是否正確。

      使用配置任務時指定的使用者名稱和密碼從遠端連線訪問目標庫,測試資料庫能否連通。以MySQL資料庫為例,建立串連的命令為mysql -h<目標庫IP或者網域名稱> -P<目標庫連接埠號碼> -u<使用者名稱> -p<密碼>

    • 排查白名單設定:如目標庫為自建庫,您可以檢查目標庫的安全設定中是否已完整添加DTS伺服器的IP白名單。參見:將DTS伺服器的IP位址區段添加到自建資料庫的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等)或使用第三方工具測試網路的連通性及網路延時。

更多資訊

增量任務延遲的解決方案,請參見如何解決增量遷移延遲或同步延遲