當多個實時任務、實時管道任務對同一個資料庫的不同表進行實時同步時,會重複解析資料庫的日誌,導致資料庫壓力過大,特別是在實時任務場景下,不同表會在不同實時任務中處理,就很容易導致日誌被解析多次。
實時採集任務支援對資料庫日誌解析進行管理,儲存日誌解析産生的變更資料,實時任務/實時管道任務能夠消費實時採集任務的資料。
注:所有實時任務/實時管道任務的 CDC 輸入,都預設走實時資料獲取任務。
1)點選「管理系統>資料連結>實時採集任務」,設定 快取配置
2)建立實時管道或者實時任務後,在「管理系統>資料連結>實時採集任務」中自動新增實時採集任務,不需要使用者手動新增。如下圖所示:
4.2.14.1 之前版本:
採集任務根據資料連結URL來區分:
如果不同資料連結URL完全一緻,只會建立一個實時採集任務。
資料連結URL發生變化,比如加個空格/加個後綴參數之類,就會建立一個新的採集任務。
4.2.14.1 及之後版本:
採集任務以「資料連結的名稱」來區分。
注:重置啟動實時管道任務/實時任務,相當於建立任務,參考下方表格說明即可。
已有實時採集任務,建立一個新表的任務:
已經有link1的實時採集任務1在運作,正在收集table1、table2表的CDC資料
建立link1下table3表的任務1,並啟動
按照table3的時間點解析日誌單獨收集table3的資料
已經有link1的實時採集任務1在運作,正在收集table1、table2、table3表的CDC資料
建立link1下table1的任務1,並啟動
任務1直接使用實時採集任務1收集的日誌資料:
1)當任務1使用「全量+增量」或「啟動時間」時,使用實時採集任務1
2)當任務1使用「自訂時間」時:
當自訂時間早於實時採集任務1的最早時間時,按照table1的時間點解析日誌,自動補齊table1缺失資料;當自動補齊時,資料庫已經沒有相應時間點的日誌,則任務1中止報錯,實時採集任務1正常運作
當自訂時間晚於實時採集任務1的最早時間時,直接使用實時採集任務1
有一個任務1在同步table1、table2、table3的資料,停止任務1/因為非CDC資料的原因導緻任務異常中止
檢查任務中使用的所有來源表的CDC資料是否有其他任務在使用:
如果沒有其他任務使用,實時採集任務1繼續採集 24h,24h 後自動停止
如果有其他任務使用,實時採集任務1繼續運作
有一個任務1在同步table1的資料,停止任務1/因為非CDC資料的原因導緻任務異常中止
如果沒有其他任務使用,實時採集任務1自動暫停收集table1的CDC資料,繼續收集table2、table3的CDC資料
如果有其他任務使用,實時採集任務1繼續收集table1、table2、table3的CDC資料
當實時管道/實時任務暫停時,不再自動觸發採集任務中表的暫停(若實時採集任務中存在表未被使用,會進行提示;同時,實時採集任務中支援 手動刪除表 )。
長期不用的採集表要手動在採集任務詳情頁刪除,否則 Kafka 會持續佔用磁碟
有一個任務1在同步table1、table2、table3的資料,停止任務1後,刪除任務1
如果沒有其他任務使用,自動刪除實時採集任務1,並自動刪除已經收集的table1、table2、table3的CDC資料
如果有其他任務使用,在實時採集任務1中繼續收集table1、table2、table3的CDC資料
有一個任務1在同步table1的資料,停止任務1後,刪除任務1
如果沒有其他任務使用,在實時採集任務1中不再收集table1的CDC資料,並且自動刪除table1已經收集的資料,繼續收集table2、table3的CDC資料
當實時管道/實時任務刪除時,不再自動觸發採集任務中表的刪除(若實時採集任務中存在表未被使用,會進行提示;同時,實時採集任務中支援 手動刪除表 )。
有一個任務1之前同步table1、table2、table3的資料,現在暫停,並且有一個實時採集任務1對tablea1、table2、table3進行資料獲取
恢複啟動任務1
恢複任務時,檢查任務中使用的所有來源表的CDC資料是否在收集:
1)如果是在收集,說明有其他任務正在使用這些表的CDC資料,按照當前任務的斷點從實時資料共享中心取數進行同步即可
如果斷點時間早於在實時資料共享中心最早的資料,則該任務報錯中止
2)如果沒有在收集,說明也沒有其他任務正在使用這些表的CDC資料,自動恢複啟動該實時採集任務收集,繼續收集table1、table2、table3的資料,按照當前任務的斷點從實時資料共享中心取數進行同步即可
3)任務1恢複啟動時,有三種情況:
情況一:實時資料共享中心該表的資料有斷點時間的資料,可以正常恢複同步
情況二:斷點時間早於實時資料共享中心的最早資料,則自動補數
情況三:斷點時間晚於實時資料共享中心中的最晚資料,先恢複實時採集任務收集到相應斷點後,再繼續進行同步
有一個任務1之前同步table1的資料,現在暫停,並且有一個實時採集任務1對table1、table2、table3
2)如果沒有在收集,說明也沒有其他任務正在使用這些表的CDC資料,自動恢複啟動該實時採集任務收集,繼續收集table1的資料,按照當前任務的斷點從實時資料共享中心取數進行同步即可
4.2.14.1 及之後版本,邏輯優化:
1)當採集任務被手動暫停後,因為某一個實時任務重新觸發啟動時,啟動時就恢複所有表的採集。
2)當實時管道、實時任務恢複啟動時:
對應的採集任務不存在或者對應的表不存在時,實時管道報表級錯誤、實時任務報任務級錯誤;採集任務中,報錯:沒有解析${表名}的資料,請重新同步,自動新增該表的解析
對應的表運作錯誤時,實時管道報表級錯誤、實時任務報任務級錯誤;採集任務中,報錯:${表名}解析錯誤,請重新同步,自動重置該表的解析
對應的表最早訊息時間晚於所需時間時,實時管道報表級錯誤,實時任務報任務級錯誤;採集任務中,${表名}的增量資料已過期,請重新同步
實時採集任務從運作中→ 運作錯誤:
有一個任務1在實時同步link1中的table1、table2、table3的資料
link1的實時採集任務1,因為各種原因出錯,比如與資料庫連結中斷、日誌檔案不存在等
實時採集任務1運作錯誤中止
任務1報錯中止,並且列印出實時採集任務1具體的錯誤原因
所有依賴實時採集任務1的任務全部運作錯誤中止,並且列印出實時採集任務1具體的錯誤原因
使用者按照具體的錯誤原因,採取針對性的操作即可
實時採集任務被異常停止:
link1的實時採集任務1,被其他原因停止
所有依賴實時採集任務1的任務全部運作錯誤中止,並且列印出具體錯誤原因:實時採集任務(任務一)已停止
使用者恢複啟動某個任務,會自動恢複啟動實時採集任務,其他的任務恢複啟動即可
1)實時採集任務中表的異常情況都在實時、管道任務中體現。
當實時採集任務中表運作錯誤、異常刪除時,依賴該實時採集任務的實時任務報錯中止,實時管道任務移除異常表的同步,正常的表照常同步,當實時管道任務中所有表都異常時,管道任務才整體報錯。
比如解析相應時間點的日誌時,如果相應時間點的日誌丟失,則實時採集任務報錯中止、依賴該實時採集任務的任務也報錯。
2)當建立的實時任務、實時管道任務的啟動時間早於實時資料共享中心的資料最早的資料時,會自動補齊資料。
1)實時採集任務將資料庫中所有CDC資料都寫入到實時資料共享中心,由各個業務決定使用哪一類資料。比如對於 DDL 的資料,資料管道會進行使用,實時任務暫時沒有使用 DDL 的功能。
實時採集任務暫不支援髒資料容忍,遇到髒資料時,先走重試邏輯,重試 3 次失敗後,則實時採集任務報錯中止
1)4.2.17.4 之前版本,如果報錯相同,不會重置重試次數,即重試三次後,再遇到相同報錯,不會進行重試;若遇到不同報錯,會進行第一次重試。
2)4.2.17.4 及之後版本,只要異常距離上次啟動時間超過 30 分鐘,重置重試次數。
2)對實時、管道任務運作邏輯的變動:
1)重試邏輯:管道、實時任務的重試不控制與 CDC 資料源的重試,只控制管道和實時資料共享中心連結的重試和其匯出端的重試。
2)刪除表情況:
實時任務需要基於刪除的 ddl 事件,報錯中止、列印相應報錯日誌,並觸發相應的結果通知。
實時管道任務會基於刪除表的ddl事件,觸發通知和列印日誌,繼續同步其他表。
3)自訂同步時間:在實時任務、實時管道任務中同步方式選擇「自訂時間」時,可以設定「資料庫日誌最早時間」和「共享中心最早時間」中的最早時間;實時管道任務中需要取「當前任務的所有表各自的最早時間」中的最晚時間。
4)恢複啟動:當實時、管道任務恢複啟動時,如果實時資料共享中心中最早的資料晚於斷點時間,任務報錯中止。
詳情請參見:實時採集任務維運
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙