我是靠谱客的博主 贪玩小熊猫,最近开发中收集的这篇文章主要介绍canal与mysql高可用_CANAL 高可用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Canal 是阿里巴巴mysql数据库binlog的增量订阅&消费组件, 你可以从这儿了解它.

Canal 的常见使用场景之一就是数据同步, 例如我们使用 canal 就是为了把 mysql 的数据同步到 elasticsearch 中. 使用 canal 做数据同步的时候无疑会涉及到三个部分: 数据源(mysql), canal server(接收 mysql binlog), canal client(接收 canal server 发送的解析过的 binlog 消息).

为了保证数据同步高可用, canal 针对上述三个部分设计了对应的高可用方案.

Canal server 和 client 高可用

Canal server 和 client 端的高可用方案依赖 zookeeper, 启动 canal server 和 client 的时候都会 zookeeper 读取信息. Canal 在 zookeeper 存储的数据结构如下:

/otter

└── canal

└── destinations

└── flight_segment # canal 实例名称

├── 1001 # canal client 信息

│ ├── cursor # 当前消费的 mysql binlog 位点

│ ├── filter # binlog 过滤条件

│ └── running # 当前正在运行的 canal client 服务器

├── cluster # canal server 列表

│ └── 10.93.61.86:11111

└── running # 当前正在运行的 canal server 服务器

Canal server 和 client 启动的时候都会去抢占 zk 对应的 running 节点, 保证只有一个 server 和 client 在运行, 而 server 和 client 的高可用切换也是基于监听 running 节点进行的.

mysql 多数据源高可用

Canal 一个实例可以配置两个数据源, master 和 standby. 假如 master 数据源宕机了, canal 的 MysqlDetectingTimeTask 就会调用 HeartBeatHAController 触发一个在 master 和 standby 数据源之间的自动切换.

MysqlDetectingTimeTask 其实就是在 canal server 和 mysql 之间维护心跳信息, 当 mysql 挂了之后触发一次自动切换.

当然, 为了做到上述三种高可用 Canal 做了很多工作, 在这儿就不展开讲了, 以后有机会的话会仔细分析一下.

最后

以上就是贪玩小熊猫为你收集整理的canal与mysql高可用_CANAL 高可用的全部内容,希望文章能够帮你解决canal与mysql高可用_CANAL 高可用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部