alibaba/canal

2019/07/16 15:33
阅读数 81

 

Code Issues 136 Pull requests 10 Projects 0 Wiki Security

 

All your code in one place

Over 36 million developers use GitHub together to host and review code, project manage, and build software together across more than 100 million projects.

阿里巴巴 MySQL binlog 增量订阅&消费组件
  •  
 
 
 
 
Type Name Latest commit message Commit time
 
  .github/ISSUE_TEMPLATE fixed issue template 3 months ago
 
  .mvn/wrapper fixed mvn wrapper 4 months ago
 
  canal-admin canal admin 2 days ago
 
  client-adapter Merge branch 'master' into master 2 days ago
 
  client Support seamless docking with Alibaba Cloud RocketMQ commercial servi… 2 months ago
 
  common canal admin 2 days ago
 
  dbsync add logger info for query_log_event 27 days ago
 
  deployer Merge branch 'master' into master 2 days ago
 
  docker fixed tablemeta check 8 months ago
 
  driver Add unit tests for com.alibaba.otter.canal.parse.driver.mysql.utils.M… 18 days ago
 
  example Support seamless docking with Alibaba Cloud RocketMQ commercial servi… 2 months ago
 
  filter [maven-release-plugin] prepare for next development iteration 3 months ago
 
  images Update response time image. 11 months ago
 
  instance fixed compile 28 days ago
 
  meta open the switch to get codecov test coverage (#1671) 3 months ago
 
  parse #1897 , fix DummyEventStore implements new method (#1932) 19 days ago
 
  prometheus [maven-release-plugin] prepare for next development iteration 3 months ago
 
  protocol fixed issue #1897 , memory event store ack null 21 days ago
 
  server Merge branch 'master' into master 2 days ago
 
  sink #1897 , fix DummyEventStore implements new method (#1932) 19 days ago
 
  store fixed issue #1897 , memory event store ack null 21 days ago
 
  .codecov.yml open the switch to get codecov test coverage (#1671) 3 months ago
 
  .gitignore modify 5 days ago
 
  .travis.yml update pom 3 months ago
 
  LICENSE.txt init 5 years ago
 
  README.md 修正文档链接&优化格式 #1965 (#1967) 4 days ago
 
  RELEASE.txt init 5 years ago
 
  codeformat.xml fixed code template and format 4 years ago
 
  codetemplates.xml fixed code template and format 4 years ago
 
  logo.png add logo 2 months ago
 
  mvnw add mvnw 4 months ago
 
  pom.xml modify 6 days ago

 

README.md

build status codecov maven license average time to resolve an issue percentage of issues still open

 

背景

早期,阿里巴巴 B2B 公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求 ,主要是基于trigger的方式获取增量变更。从 2010 年开始,公司开始逐步尝试数据库日志解析,获取增量变更进行同步,由此衍生出了增量订阅和消费业务,从此开启一段新纪元。

当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x

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

  • 数据库镜像
  • 数据库实时备份
  • 索引构建和实时维护(拆分异构索引、倒排索引等)
  • 业务 cache 刷新
  • 带业务逻辑的增量数据处理

 

项目介绍

 

名称:canal [kə'næl]

 

译意: 水道/管道/沟渠

 

产品定位: 基于数据库增量日志解析,提供增量数据订阅和消费

 

关键词: MySQL binlog parser / real-time / queue&topic / index build

 

工作原理

 

MySQL主备复制原理

  • MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)
  • MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
  • MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据

 

canal 工作原理

  • canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
  • MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
  • canal 解析 binary log 对象(原始为 byte 流)

 

重要版本更新说明

canal 1.1.x 版本(release_note),性能与功能层面有较大的突破,重要提升包括:

 

文档

 

多语言

canal 特别设计了 client-server 模式,交互协议使用 protobuf 3.0 , client 端可采用不同语言实现不同的消费逻辑,欢迎大家提交 pull request

canal 作为 MySQL binlog 增量获取和解析工具,可将变更记录投递到 MQ 系统中,比如 Kafka/RocketMQ,可以借助于 MQ 的多语言能力

 

相关开源

 

问题反馈

 

其他资料

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
在线直播报名
返回顶部
顶部