Canal学习笔记(服务端)

时间:2023-03-09 21:50:38
Canal学习笔记(服务端)

canal服务端

canal服务端有两种运行模式,一种单机模式,一种HA运行模式(zk保证)

单机模式:同步的binlog节点信息保存在本地(/conf/{自定义分区文件夹}/),meta.dat

Canal学习笔记(服务端)

HA模式:同步的binlog节点信息在zk上Canal学习笔记(服务端)

canal配置文件

canal配置文件分为两类,

  一类是全局配置文件(/conf/canal.properties),里面定义了一些公共的全局参数,例如zk信息

  一类是启动实例配置文件(/conf/{自定义分区文件夹}/instance.properties),里面定义了一些实例参数(每一个的实例参数可能都是不一样的,例如slaveId不能重复),例如数据库链接,slaveId等。

canal HA模式配置

  在全局配置文件(/conf/canal.properties)中配置zk信息、自定义分区名称(需要和自定义分区文件夹保持一致)、实例全局配置,详细如下:

  zk信息配置:

Canal学习笔记(服务端)

  自定义分区名称、全局实例配置:

Canal学习笔记(服务端)

  在实例配置数据库链接、slaveId,配置如下:

Canal学习笔记(服务端)

canal HA模式服务端启动过程

  canal服务端在启动时首先链接zk,从zk上查找binlog同步节点信息,找到则从binlog同步节点信息开始dump binlog日志。

Canal学习笔记(服务端)

  如果没有找到binlog同步节点信息(第一次启动)则会去配置实例配置文件中查找binlog同步节点信息,找到则从binlog同步节点信息开始dump binlog日志,配置如下:

Canal学习笔记(服务端)

  如果实例配置文件中没有配置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日志,可能比较耗费时间。