canal 设置 timestamp

canal

阿里巴巴开源项目,基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql

工作原理

canal 设置 timestamp

  1. canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
  2. mysql master收到dump请求,开始推送binary log给slave(也就是canal)
  3. canal解析binary log对象(原始为byte流)

HA模式下,从指定时间戳开始请求binlog

  1. 先停掉canal
    ./bin/stop.sh
  2. 删除zookeeper中canal指定实例对应的节点example
    进入zookeeper控制台
    rmr /otter/canal/destinations/example
    
  3. 修改canal中指定实例的配置文件examplecanal.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=
    
  4. 启动canal
    ./bin/startup.sh
  5. 检查数据是否准确
    canal会从时间戳大于等于1555412177000的地方开始请求binlog,并把点位信息写入zookeeper,下次重启,如果不删除zookeeper中相应节点,canal会从zookeeper中读取点位信息请求binlog