Docker----基于docker搭建HA模式的canal

一. canal

1. 简介

在这里插入图片描述
canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

基于日志增量订阅和消费的业务包括

  • 数据库镜像
  • 数据库实时备份
  • 索引构建和实时维护(拆分异构索引、倒排索引等)
  • 业务 cache 刷新
  • 带业务逻辑的增量数据处理
  • 当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x

2.工作原理

1.MySQL主备复制原理在这里插入图片描述
  • MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log
    events,可以通过 show binlog events 进行查看)
  • MySQL slave 将 master 的二进制事件拷贝到它的中继日志(relay log)
  • 中继日志中的从服务器重做事件随后将更新其旧数据。
2.canal 工作原理
  • canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,并将转发协议发送到 MySQL master服务器
  • MySQL master 收到转储请求后,开始推送二进制日志给 slave (即 canal )
  • canal 解析二进制日志对象为自己的数据类型(原始字节流)

二.zookeeper集群搭建

1.搭建服务器地址

ip地址 服务器名称
192.168.10.94 ydt
192.168.10.95 ydt1
192.168.10.96 ydt2

2.docker启动命令

ydt
docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zk3 -v /home/ydt/zookeeper/conf/:/conf -v /home/ydt/zookeeper/data:/data --net host zookeeper
ydt1
docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zk1 -v /home/ydt/zookeeper/conf/:/conf -v /home/ydt/zookeeper/data:/data --net host zookeeper
ydt2
docker run -d -p 2181:2181 -p 2888:2888 -p 3888:3888 --name zk2 -v /home/ydt/zookeeper/conf/:/conf -v /home/ydt/zookeeper/data:/data --net host zookeeper

3.配置文件修改

配置文件zoo.cfg:宿主机路径/home/ydt/zookeeper/conf
clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=192.168.10.95:2888:3888
server.2=192.168.10.96:2888:3888
server.3=192.168.10.94:2888:3888

配置文件myid:宿主机路径/home/ydt/zookeeper/data设置为数字1、2、3,根据server.id配置

4.查看集群状态

$ echo stat | nc 192.168.10.96 2181
Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 09/20/2019 16:05 GMT
Clients:
 /192.168.10.96:59258[0](queued=0,recved=1,sent=0)
 /192.168.10.96:51456[1](queued=0,recved=9885,sent=9885)
 /192.168.10.95:37598[1](queued=0,recved=34744,sent=34744)
 /192.168.10.95:48640[1](queued=0,recved=14126,sent=16480)

Latency min/avg/max: 0/0/156
Received: 58763
Sent: 61116
Connections: 4
Outstanding: 0
Zxid: 0x40000acaa
Mode: leader
Node count: 31
Proposal sizes last/min/max: 363/32/370

5.canal-server搭建

搭建服务器地址

ip地址 服务器名称
192.168.10.95 ydt1
192.168.10.96 ydt2

docker启动命令

ydt1
docker run -d   --name canal -v /home/ydt/canal-server:/home/admin/canal-server  -p 11111:11111 --net host canal/canal-server:v1.3.0
ydt2
docker run -d   --name canal -v /home/ydt/canal-server:/home/admin/canal-server  -p 11111:11111 --net host canal/canal-server:v1.3.0

配置文件修改

配置文件canal.properties:宿主机路径/home/ydt/canal-server/conf

#需要修改的地方

canal.id= 2 //两个canal-server不同

canal.zkServers=192.168.10.94:2181,192.168.10.95:2181,192.168.10.96:2181 //zookeeper集群地址

canal.destinations= example,activity_mini 

#canal.instance.global.spring.xml = classpath:spring/memory-instance.xml
#canal.instance.global.spring.xml = classpath:spring/file-instance.xml
canal.instance.global.spring.xml = classpath:spring/default-instance.xml
#其它地方默认

配置文件instance.properties:宿主机路径/home/ydt/canal-server/conf/example

#需要修改的地方

canal.instance.mysql.slaveId=3333 //id号不能与mysql的重复,和其他的instance重复

canal.instance.master.address=192.168.10.95:3316 //链接的mysql地址

# username/password //mysql的用户名密码以及编码格式
canal.instance.dbUsername=root
canal.instance.dbPassword=123456
canal.instance.connectionCharset=UTF-8

canal.instance.filter.regex=pzhframe_base_organization\\..* //授权的数据库

canal.instance.filter.black.regex= //黑名单

具体参考链接地址

猜你喜欢

转载自blog.csdn.net/weixin_44006354/article/details/100896204