Canal 学习

Canal 官方介绍

Canal 安装

版本

  • Java 1.8
  • canal.deployer-1.1.4.tar.gz
  • zookeeper-3.4.5-cdh5.7.0.tar.gz

提醒

  • Canal 是一个需要运行在 java 环境里的程序
  • Canal 安装前后记得关闭防火墙,或者开放相应端口
  • 单机模式,file-instance.xml,这样才能在 conf/example 的目录下看到 meta.dat,如果有 position 相关问题,删除 meta.dat,重启 canal 即可恢复。
  • 集群模式,default-instance.xml,binlog 的 position 相关都在 zookeeper 集群中,如果有 position 相关问题,可以删除节点/otter/canal/destinations/xxxxx/1001/cursor ,重启 canal 即可恢复。

单实例

材料

  • 单 canal server
  • 单 canal client,CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(ip, 11111), destination, "", "");
  • 官方安装文档

简单说

  • 单服务的 Canal Server 就不用依靠 Zookeeper 集群了。

集群实例

材料

简单说

  • Canal 的集群搭建是依赖 Zookeeper 集群的,所以应该先搭建 Zookeeper 集群

故障转移

注意,因为 Canal Client 要连接的是一个 Canal Instance,因此两台机器上的 Instance 目录的名字需要保证完全一致,HA模式是依赖于 Instance Name 进行管理。

Canal 集群在依赖 Zookeeper 集群成功启动后,实际上是只有一个 Canal Server 在运作,这是 Canal 自己的设计,主要是为了防止对数据库多次 dump。既然是集群,那么在当前运作的 Canal Server 停止后,会有下一个 Canal Server 继续生效,只不过,如果不通过 MQ 的话,对于客户端来说,这是一个快速恢复的方案,而不是故障转移

TSDB

细心的同学可能会注意到配置文件里带有tsdb,这么个关键词的配置。他是一种时序表结构方案的设计,解释来讲就是用来解决 Canal 集群下每当发生 DDL 的时候,dump 下来的 binlog 里面的字段可能匹配不上的情况。

我这里建议用 mysql 的方式进行配置。值得注意的是,官方给出了 h2 和 mysql 两种方式,这两种配置的地方分别在全局通用的 canal.properties 里和具体某实例的 instance.properties 里。虽然在两个地方,但是具体配置项基本都是重复的,只有 url 这一项不同,所以提醒大家,在配置 mysql 的时候,记得将全局的隐掉,只保留全局的 enable 即可。

集群实例(带 Kafka 集群)

材料

  • 修改部分 instance.properties,尤其注意打开canal.mq.dynamicTopic ,否则,要么接收不到,要么接收到的消息可能是莫名其妙的样子
  • 修改部分 canal.properties
  • canal client,KafkaCanalConnector connector = new KafkaCanalConnector(kafkaServers, "example", partition, groupId, null, false);
  • 具体参考集群实例的安装方法

简单说

  • 相比上面的集群实例,就是多了个 Kafka 集群,并且改了些配置。

顺序性

  • Canal 的顺序性可以由 Binlog 保证,因为 Binlog 本身就是顺序的。
  • Canal 的顺序性可以由 Kafka 保证,可以查看这个
  • Canal 的顺序性可以由 Zookeeper 集群保证,可以查看这个

相关命令

zookeeper

./zkServer.sh start #启动
./zkServer.sh status #查看状态

./zkCli.sh #启动客户端
ls /otter/canal/cluster #启动客户端后,此命令可以实时的查看注册到 zoo 的 canal server 们
ls /brokers/ids #启动客户端后,此命令可以实时的查看注册到 zoo 的 kafka server 们
ls /brokers/topics #启动客户端后,此命令可以查看在此 zoo 集群中曾经创建过的 topic 们

kafka

可以用同一个 kafka 目录下的 server.properties 造出三个配置文件,分别指定启动,就可以是三个 kafka server 了
./kafka-server-start.sh /home/kafka_2.13-2.4.0/config/server-1.properties #启动 kafka server 1
./kafka-server-start.sh /home/kafka_2.13-2.4.0/config/server-2.properties #启动 kafka server 2
./kafka-server-start.sh /home/kafka_2.13-2.4.0/config/server-3.properties #启动 kafka server 3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值