Debezium日常分享系列之:Debezium 3.2.2.Final發布
- Debezium CoreConnector
- 啟動時出現難以理解的錯誤
- 臨時阻塞快照失敗可能導致數據丟失的問題修復
- Debezium for Oracle
Debezium CoreConnector
啟動時出現難以理解的錯誤
我們解決了一個問題,即連接器會因誤導性的錯誤消息而無法啟動,恢復了平滑的啟動過程,同時保留了改進的偏移驗證
用戶在連接器啟動過程中遇到了這種令人困惑的異常情況。
org.apache.kafka.connect.errors.DataException: Invalid value: null used for required field: "schema", schema type: STRING
這個不明確的錯誤信息沒有提供任何有用的線索來確定實際問題所在,使故障排除變得幾乎不可能。
這個問題是由于我們最近對偏移驗證所做的改進引起的。我們改進了邏輯,在源數據庫中不再有可用的偏移位置時提供更詳細的錯誤消息,這有助于診斷常見的操作問題。
但是,新的驗證邏輯假設在連接器啟動時某些偏移屬性已經存在。實際上,這些屬性是在連接器生命周期的后期才被填充的,導致驗證提前失敗,并顯示了一個無用的錯誤消息
我們更新了異常處理邏輯,旨在:
- 避免在啟動階段對偏移量屬性的可用性做出預設;
- 在偏移量確實無效的情況下,保留強化的驗證機制;
- 當偏移位置確實存在問題時,提供有意義的錯誤信息;
- 允許正常啟動流程繼續進行,避免誤報干擾;
此項修復確保您能在不中斷啟動過程的前提下,獲得增強的錯誤報告功能。
臨時阻塞快照失敗可能導致數據丟失的問題修復
我們已解決一個關鍵缺陷:當臨時阻塞快照(ad-hoc blocking snapshots)執行異常時可能造成數據丟失。此次修復確保即使快照失敗,流式數據仍能保持完整。
原問題分析:執行臨時阻塞快照時,若表中存在無效數據會導致快照失敗。該故障會引發嚴重副作用:快照期間產生的流式事件將永久丟失。這意味著,若快照運行數小時后遭遇異常數據,連接器恢復流式傳輸時將完全跳過這數小時內發生的所有實時數據變更。
解決方案:新版阻塞快照通過以下機制實現故障安全處理:
- 精準保存快照起始位點:持久化記錄快照開始前的精確流式處理位置
- 自動斷點續傳:快照失敗時自動從正確位置恢復處理
- 數據零丟失保障:無論快照何時因何故中斷,均確保數據完整性
價值說明:此項改進顯著提升阻塞快照在生產環境的可靠性。
Debezium for Oracle
最后批次處理吞吐量指標優化我們提升了Oracle LogMiner適配器中LastBatchProcessingThroughput JMX指標的準確性,使您能更精準監控連接器性能。
原計算邏輯缺陷:此前該指標基于每批次實際處理的表事件數量計算吞吐量。該方式在以下場景會導致數據失真:
- 庫級過濾干擾:即使連接器仍需讀取評估被過濾記錄,事件計數減少導致吞吐量虛低
- 事務標記干擾:事件流中的事務控制標記顯著扭曲統計值,實際處理負載被低估
- 配置項干擾:各類配置變更引發指標波動,無法真實反映連接器性能
新計算方案:現改為基于從LogMiner數據集讀取的JDBC物理行數計算吞吐量,包含:
- 被JVM配置過濾的行
- 事務控制記錄
- 不符合表/模式過濾條件的行
核心價值:新版指標精準反映Debezium連接器在每批次處理窗口中的原始處理能力。