alibaba/canal:阿里巴巴MySQL binlog增量订阅&消费组件
canal是阿里巴巴的MySQL binlog增量订阅与消费组件。早期因双机房部署需求发展而来,它基于MySQL数据库增量日志解析提供增量数据订阅和消费。涵盖数据库镜像、实时备份、索引构建...
标签:Github项目alibaba/canal MySQLbinlog 增量消费 增量订阅 数据库同步【Github】项目名:alibaba/canal – 阿里巴巴MySQL binlog增量订阅&消费组件
项目简介
canal主要用于基于MySQL数据库增量日志解析,提供增量数据订阅和消费。早期因阿里巴巴杭州和美国双机房部署有跨机房同步需求,最初基于业务trigger获取增量变更,自2010年起逐步尝试通过数据库日志解析获取增量变更进行同步,从而衍生出众多数据库增量订阅和消费业务,如数据库镜像、数据库实时备份、索引构建和实时维护(拆分异构索引、倒排索引等)、业务cache刷新、带业务逻辑的增量数据处理等。其支持源端MySQL多个版本,包括5.1.x、5.5.x、5.6.x、5.7.x、8.0.x。
工作原理
基于MySQL主备复制原理,MySQL master将数据变更写入二进制日志(其中记录叫二进制日志事件,可通过show binlog events查看),MySQL slave将master的binary log events拷贝到中继日志,再重放其中事件反映到自己的数据。canal模拟MySQL slave交互协议,伪装成MySQL slave向MySQL master发送dump协议,master收到请求后推送binary log给slave(即canal),canal解析binary log对象(原始为byte流)。
重要版本更新说明
canal 1.1.x版本在性能与功能层面有较大突破,整体性能测试&优化提升了150%,原生支持prometheus监控、kafka消息投递、aliyun rds的binlog订阅(解决自动主备切换/oss binlog离线解析)、docker镜像。canal 1.1.4版本迎来最重要的WebUI能力,引入canal – admin工程,支持面向WebUI的canal动态管理能力,支持配置、任务、日志等在线白屏运维能力。
客户端相关
canal特别设计了client – server模式,交互协议使用protobuf3.0,client端可采用不同语言实现不同的消费逻辑,有java、c#、go、php、Python、Rust、Nodejs等多种语言的客户端可供使用。canal作为MySQL binlog增量获取和解析工具,可将变更记录投递到MQ系统(如Kafka/RocketMQ),借助MQ多语言能力。
项目总结
canal是一个功能强大的MySQL binlog增量订阅和消费组件,在阿里巴巴内部有着丰富的业务需求衍生历程,并且不断更新发展,在很多数据库相关业务场景下有着重要作用。欢迎大家在评论区留言,一起参与对该项目的讨论。
项目地址
数据统计
数据评估
本站链氪巴士提供的alibaba/canal:阿里巴巴MySQL binlog增量订阅&消费组件都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由链氪巴士实际控制,在2024年12月5日 上午12:00收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,链氪巴士不承担任何责任。