canal 设置 timestamp
canal
阿里巴巴开源项目,基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql
工作原理
- canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
- mysql master收到dump请求,开始推送binary log给slave(也就是canal)
- canal解析binary log对象(原始为byte流)
HA模式下,从指定时间戳开始请求binlog
- 先停掉canal
./bin/stop.sh
- 删除zookeeper中canal指定实例对应的节点example
进入zookeeper控制台 rmr /otter/canal/destinations/example
- 修改canal中指定实例的配置文件example的canal.instance.master.timestamp
# position info #### 修改为自己的MySQL IP和port #### canal.instance.master.address=ip:port canal.instance.master.journal.name= canal.instance.master.position= #### 修改为起始时间戳 #### canal.instance.master.timestamp=1555412177000 canal.instance.master.gtid=
- 启动canal
./bin/startup.sh
- 检查数据是否准确
canal会从时间戳大于等于1555412177000的地方开始请求binlog,并把点位信息写入zookeeper,下次重启,如果不删除zookeeper中相应节点,canal会从zookeeper中读取点位信息请求binlog