canal服務端
canal服務端有兩種運行模式,一種單機模式,一種HA運行模式(zk保證)
單機模式:同步的binlog節點信息保存在本地(/conf/{自定義分區文件夾}/),meta.dat
HA模式:同步的binlog節點信息在zk上
canal配置文件
canal配置文件分為兩類,
一類是全局配置文件(/conf/canal.properties),里面定義了一些公共的全局參數,例如zk信息
一類是啟動實例配置文件(/conf/{自定義分區文件夾}/instance.properties),里面定義了一些實例參數(每一個的實例參數可能都是不一樣的,例如slaveId不能重復),例如數據庫鏈接,slaveId等。
canal HA模式配置
在全局配置文件(/conf/canal.properties)中配置zk信息、自定義分區名稱(需要和自定義分區文件夾保持一致)、實例全局配置,詳細如下:
zk信息配置:
自定義分區名稱、全局實例配置:
在實例配置數據庫鏈接、slaveId,配置如下:
canal HA模式服務端啟動過程
canal服務端在啟動時首先鏈接zk,從zk上查找binlog同步節點信息,找到則從binlog同步節點信息開始dump binlog日志。
如果沒有找到binlog同步節點信息(第一次啟動)則會去配置實例配置文件中查找binlog同步節點信息,找到則從binlog同步節點信息開始dump binlog日志,配置如下:
如果實例配置文件中沒有配置binlog 同步節點信息,則服務端向mysql發送show master status查詢binlog的最后的位置信息,然后開始從這個位置信息 dump binlog日志。
指定binlog 節點信息 dump binlog
單機模式:修改/conf/meta.dat里面的信息即可
HA模式:修改zk上的cursor信息或者在全局配置文件中指定新的分區名稱,然后在實例配置文件配置信息即可
需要配置的信息:"journalName":"mysql-bin.000007","position":407258,"serverId":42,"timestamp":1554806456000,可以只配置一個。
建議:配置開始同步的binlog 時間戳,這樣最簡單,缺點是服務端在啟動時需要掃面mysql的binlog日志,找到指定的時間戳的binlog日志,可能比較耗費時間。