Canal启动流程
2024-12-26 17:58:11 0 举报
Canal启动流程是一个用于管理、同步和备份MySQL数据库数据变化的工具。其启动过程主要包括以下几个关键步骤:首先,Canal服务端需要读取配置文件,配置源数据库信息、日志位置、监听端口等信息。接着,Canal服务端会启动netty server,监听配置的监听端口。然后,Canal客户端会发起连接请求,与服务端建立连接。连接建立后,Canal客户端会向服务端发送订阅请求,指定需要订阅的数据库和表。服务端收到订阅请求后,会开启一个新的线程,专门处理这个订阅请求。最后,Canal服务端会启动日志解析线程,从指定的日志位置开始解析binlog,并将解析出的数据封装为Event,发送到对应的客户端。整个过程中,Canal服务端和客户端之间通过protobuf协议进行通信。
作者其他创作
大纲/内容
Canal server
1.尝试启动
3.检测发现A机器不可用,通知启动
2.记录当前可用的节点host的信息列表
Server B
zookeeper
canal server实现流程如下:1. canal server 要启动某个 canal instance 时都先向 zookeeper 进行一次尝试启动判断 (实现:创建 EPHEMERAL 节点,谁创建成功就允许谁启动); 2.创建 zookeeper 节点成功后,对应的 canal server 就启动对应的 canal instance,没有创建成功的 canal instance 就会处于 standby 状态; 3.一旦 zookeeper 发现 canal server A 创建的节点消失后,立即通知其他的 canal server 再次进行步骤1的操作,重新选出一个 canal server 启动instance; 4. canal client 每次进行connect时,会首先向 zookeeper 询问当前是谁启动了canal instance,然后和其建立链接,一旦链接不可用,会重新尝试connect。PS: 为了减少对mysql dump的请求,不同server上的instance要求同一时间只能有一个处于running,其他的处于standby状态。canal client实现流程1.canal client 的方式和 canal server 方式类似,也是利用 zookeeper 的抢占EPHEMERAL 节点的方式进行控制2.为了保证有序性,一份 instance 同一时间只能由一个 canal client 进行get/ack/rollback操作,否则客户端接收无法保证有序。
5.建立连接
2.允许启动
1. 记录当前running的节点的host信息
Canal client
4.访问当前的running节点的host信息
0 条评论
下一页