目标设计
1储元数据信息在zk 消费用mq
2本身有主从,当master挂掉后会切换
3 位点信息可以有三种存储方式 本地(meta.dat) 内存和 zk(通过key进行查看)中
canal.properties 主配置文件
1 canal基础配置-包含zk配置
canal.instance.global.spring.xml = classpath:spring/file-instance.xml(default-配合zk/memory/file-无zk,单节点模式)
2 canal mq配置
3 canal ts配置
instance.properties 创建数据库目录,编辑文件会自动加载
1底层存储用tsdb
canal.instance.tsdb.enable=true
2可以配置传统复制/gtid复制 但是不论哪种都必须配置master.timestamp
canal.instance.master.address=
canal.instance.master.journal.name= 传统复制模式
canal.instance.master.position=
canal.instance.master.timestamp=1580818113 # 必须配置,否则无法启动
canal.instance.master.gtid=gtid模式
3 库表过滤
canal.instance.filter.regex=正则表达式
4 消费MQ配置
canal.mq.topic=
canal.mq.partition=0
5 具体的正则匹配规则是怎么样的
1. 所有表:.* or .*\\..*
2. canal schema下所有表: canal\\..*
3. canal下的以canal打头的表:canal\\.canal.*
4. canal schema下的一张表:canal.test1
5. 多个规则组合使用:canal\\..*,mysql.test1,mysql.test2 (逗号分隔)
6 匹配多个类似库: canal_.*\\..*
6 生产中的一些问题
1 我曾经遇过因为使用pt-osc做DDL导致canal异常的情况,这时候需要创建_new空表即可,感觉这是一个小BUG
7 canal用户
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%' IDENTIFIED BY 'canal';