CANAL在配置中指定BINLOG文件以及POSITION定位讀取

問題:

今天在測試環境發現,各服務能收到canal的通知,但是沒有影響的數據內容。

開始以爲是應用程序問題,排查後發現有多個應該都是這個情況。所以懷疑是canal問題。

 

先說一下系統的實現情況:

mysql---(binlog)--->canal------>canal消費端---->kafka----->應用程序消費數據

 

處理步驟:

1、查詢canal的日誌(canal有兩個日誌,一個是meta.log一個是example.log)

 

第一個example.log日誌,比較直接的打印了錯誤的信息,是因爲表衝突導致

第二個meta.log日誌,我們可以發現canal一直在同步一行記錄,沒有獲取最新的binlog(導致環境刪除表導致)。

 

2、問題找到了,那接下來就是解決了。因爲是測試環境,所以想要直接跨過這個binlog就好了,那怎麼操作呢?

t1、查詢mysql的binlog情況

      登錄mysql數據庫,查看binlog信息     

show binary logs ;

查看指定日誌的詳情

show binlog events in 'mysql-bin.000035';

     

這個可以理解是一個行的起始編號,後面需要用到。

 t2、修改canal配置

    binlog文件找到了,起始號也找到了,那就是修改canal配置了

vi /canal/conf/example/meta.dat

  將1處修改爲binlog的文件名

  將2處修改爲binlog中的行超始編號

t3、重啓canal服務

   上面配置好後,我們就可以重啓canal確認是否在消息了(canal的客戶端要注意了,如果客戶端沒有啓動,這個日誌也會沒有的,特別注意!!!!)。

 tail -f /canal/logs/example/meta.log

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章