What's New | 阿里巴巴Canal开源组件发布v1.1.3版本

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: canal是阿里巴巴在2012年开源的基于MySQL数据库增量日志解析,提供增量数据订阅&消费。

640.gif

作者:阿里云数据库产品事业部

高级技术专家 七锋


1.1.3 Release Note

canal是阿里巴巴在2012年开源的基于MySQL数据库增量日志解析,提供增量数据订阅&消费。基于canal的准实时日志订阅消费,你可以完成类似的业务:

1.同步到另一个数据库,比如异地容灾、同步离线库等

2.构建多级索引 (卖家和买家各自分库索引)

3.实时构建搜索引擎,比如同步给elasticsearch

4.业务cache刷新

5.价格变化等重要业务消息

项目开源地址:https://github.com/alibaba/canal。经历了4个月的蛰伏,canal 1.1系列的1.1.3正式发布了,主要围绕自建的生态能力,完善消息投递到MQ和Client Adapter做了比较多的测试和修复工作,具体的变更日志:

功能新增

1.支持mysql8.0新的

  • caching_sha2_password认证协议

2.支持Azure MySQL的认证协议

3.canal投递MQ消息

  • 支持按表规则定义dynamic topic、partition路由的能力
  • 新增kafka消息投递事务

4.canal内置的客户端

rds-adapter 增加mysql整个DB层面的同步配置

es-adapter 新增父子文档索引适配

小需求 & bugfix
  • 解决server单核服务器无法接收数据的问题 #1605
  • 修复TableMeta TSDB支持utf8mb4 #1550
  • 修复MQ消息发送时非flatMessage模式出现数据重复 #1551
  • 修复Kafka配置为分区模式时出现数据 #1636
  • 修复fastsql的几个DDL解析问题#1306 #1546 # 1626
  • 修复rdb-adapter同步的类型转化、空指针、大小写、DDL同步等问#1313 #1338 #1341 #1408 #1433
  • 修复投递MQ模式,Canal server HA在切换后不生效 #1229
  • 修复es-adapter数据库主键类型错误 #1559
  • 修复charset编码不存在 #1662

更多详情,可以参见: https://github.com/alibaba/canal/releases

Canal工作原理

image.png

原理相对比较简单:

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

Canal整体架构

image.png

说明:

  • server代表一个canal运行实例,对应于一个jvm
  • instance对应于一个数据队列(1个server对应1..n个instance)

instance模块:

  • eventParser(数据源接入,模拟slave协议和master进行交互,协议解析)
  • eventSink(Parser和Store链接器,进行数据过滤,加工,分发的工作)
  • eventStore(数据存储)
  • metaManager(增量订阅&消费信息管理器)

整个canal-server可以有两种交付方式

1.client/server架构,可以独立部署一个canal server进程去抓取MySQL binlog,然后业务代码里启动1个或多个canal client来做消费。优点:开箱即用,运维简单

2.嵌入式架构,允许业务代码里启动canal server直接来做消费。优点:方便和业务系统做集成

canal相比于其他开源的binlog产品,如open-replicator,mysql-binlog-connector-java,Tungsten Replicator,maxwell有比较多的优势:

1.高可用性。canal支持MySQL主备、server和client多个层面的高可用机制,可以作为生产使用

2.跨语言。canal的通讯协议选择了protobuf 3.6.1,client层面目前支持java、c#、go多个语言的客户端

3.整体性。canal支持增量数据投递到MQ,同时引入Client Adpater扩展机制,目前支持rdb、elasticsearch、hbase等目标的写入

Canal应用场景

1.aliyun DRDS(分布式关系型数据库服务),基于canal实现的SQL级别闪回能力正式上线,可以做到单个SQL级别误删的闪回,再也不用担心其他并行SQL业务的数据丢失,相比于传统的备份集恢复 或 基于时间戳闪回 ,SQL闪回可以做更快的RTO和更低的RPO,具体可参见:https://help.aliyun.com/document_detail/108629.html

2.aliyun Log Service(日志服务),通过Binlog订阅数据库增量更新同步到日志服务中,导入下游离线计算或者进行审计,具体可参见:

https://help.aliyun.com/document_detail/64953.html

3.实战 canal实现Mysql到Elasticsearch实时增量同步,具体可参见:实战 | canal 实现Mysql到Elasticsearch实时增量同步

相关文章
|
9月前
|
消息中间件 弹性计算 数据可视化
SpringBoot 整合 Elastic Stack 最新版本(7.14.1)分布式日志解决方案,开源微服务全栈项目【有来商城】的日志落地实践
SpringBoot 整合 Elastic Stack 最新版本(7.14.1)分布式日志解决方案,开源微服务全栈项目【有来商城】的日志落地实践
|
7月前
|
SQL 存储 JSON
ClickHouse 23.7 版本发布说明
本文描述了部分特别值得我们重点关注的新功能。但值得注意的是,现在有几个功能已经在生产环境就绪,或处于默认启用的状态。您可以在这篇文章的末尾找到它们。
|
10月前
|
消息中间件 SQL 移动开发
waynboot商城发布啦,整合了Redis、RabbitMQ、ElasticSearch等常用中间件, 根据生产环境开发经验而来不断完善、优化、改进中
waynboot商城发布啦,整合了Redis、RabbitMQ、ElasticSearch等常用中间件, 根据生产环境开发经验而来不断完善、优化、改进中
238 0
|
存储 安全 中间件
阿里云中间件开源项目新版本发布 | 学习笔记
快速学习阿里云中间件开源项目新版本发布
503 0
阿里云中间件开源项目新版本发布 | 学习笔记
|
消息中间件 NoSQL 安全
|
canal SQL 消息中间件
阿里中间件--Canal框架实践
阿里中间件--Canal框架实践
814 0
|
canal 消息中间件 缓存
Canal v1.1.4版本避坑指南
在忍耐了很久之后,忍不住爆发了,在掘金发了条沸点(下班时发的)
408 0
Canal v1.1.4版本避坑指南
|
存储 人工智能 运维
阿里云Elasticsearch 自研引擎年度发布
2月22日 18:30,阿里巴巴资深技术专家为您揭秘自研ES日志引擎核心技术
941 0
阿里云Elasticsearch 自研引擎年度发布
|
canal 存储 NoSQL
【Canal】数据同步的终极解决方案,阿里巴巴开源的Canal框架当之无愧!!
在当今互联网行业,尤其是现在分布式、微服务开发环境下,为了提高搜索效率,以及搜索的精准度,会大量使用Redis、Memcached等NoSQL数据库,也会使用大量的Solr、Elasticsearch等全文检索服务。那么,这个时候,就会有一个问题需要我们来思考和解决:那就是数据同步的问题!如何将实时变化的数据库中的数据同步到Redis/Memcached或者Solr/Elasticsearch中呢?
709 0
【Canal】数据同步的终极解决方案,阿里巴巴开源的Canal框架当之无愧!!
|
SQL 运维 Oracle
新功能速递 | OceanBase 云平台 3.1 版本发布啦!
OceanBase 云平台(OceanBase Cloud Platform)3.1 版本全新上线,新增五大功能,让日常运维更精准。
新功能速递 | OceanBase 云平台 3.1 版本发布啦!