天天看點

DTS任務卡住問題(續集)

  • 接力上節

上篇文章參考:

https://yq.aliyun.com/articles/749360?spm=a2c4e.11155435.0.0.1df03312nyZXw1
  • 治療方案無效

根據上述連接配接解決方案,确實是可以解決正常的一些卡住問題,并且在當時調整以後确實任務也可以完整跑完成功;

但是再一次進行完整遷移測試還是出現了卡住的情況發生,檢視資料遷移情況發現還是相同的表在相同的位置;

DTS任務卡住問題(續集)

但是經過排查max_allowed_packet參數還是2G的大小設定,雖然dts後端可以通過調整batch來繞過這個問題,但是還是需要确認是什麼大記錄資料導緻的該問題;

經過抓包發現,有一條大記錄在通過dts同步到drds上的時候,drds解析失敗報錯;

DTS任務卡住問題(續集)

懷疑是這條sql的記錄被截斷導緻parse failed入庫失敗,導緻dts任務卡住;

經過和客戶應用同學溝通,客戶回報有這樣的一條資料記錄異常過大;

DTS任務卡住問題(續集)

而通過dts同步到目标drds的最大隻有4411305

DTS任務卡住問題(續集)
  • 拔毒療傷

客戶回報這條資料是有問題的,可以删除掉,故而删除以後重新開機dts任務正常遷移完成,問題解決;

DTS任務卡住問題(續集)

究其原因,客戶回報是大促活動會有很多1-2元的促銷券,每次都會有10000多張,是以對應的字段就會很大;是以對于目前現有的主表增量,還是無法控制出現大的封包存在;

DTS任務卡住問題(續集)
  • 經驗總結

對于如上出現的存在大字段text,blob的log表,在建立dts任務的時候,如果出現卡住的情況發生,可以通過調整max_allowed_packet參數,調整batch降低單次送出寫入資料并重新開機任務,減少寫入資料大小解決由于記錄内容過大導緻在drds層出現parse failed,導緻資料寫入失敗的情況發生;還有就是如果存在有異常的大字段可以考慮規避,比如删除或者備份等;