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实时增量同步

相关文章
|
6月前
|
监控 负载均衡 Dubbo
04分布式电商项目 - Dubbox 简介
04分布式电商项目 - Dubbox 简介
38 0
|
9月前
|
消息中间件 弹性计算 数据可视化
SpringBoot 整合 Elastic Stack 最新版本(7.14.1)分布式日志解决方案,开源微服务全栈项目【有来商城】的日志落地实践
SpringBoot 整合 Elastic Stack 最新版本(7.14.1)分布式日志解决方案,开源微服务全栈项目【有来商城】的日志落地实践
|
1月前
|
消息中间件 Kubernetes Docker
KubeSphere 核心实战之三【在kubesphere平台上部署ElasticSearch、应用商店部署RabbitMQ和应用市场部署Zookeeper】(实操篇 3/4)
KubeSphere 核心实战之三【在kubesphere平台上部署ElasticSearch、应用商店部署RabbitMQ和应用市场部署Zookeeper】(实操篇 3/4)
38 0
|
6月前
|
消息中间件 监控 Java
一款开源的 Kafka 管理平台
Apache Kafka UI 是一个免费的开源 Web UI,用于监控和管理 Apache Kafka 集群,可方便地查看 Kafka Brokers、Topics、消息、Consumer 等情况,支持多集群管理、性能监控、访问控制等功能
|
10月前
|
消息中间件 SQL 移动开发
waynboot商城发布啦,整合了Redis、RabbitMQ、ElasticSearch等常用中间件, 根据生产环境开发经验而来不断完善、优化、改进中
waynboot商城发布啦,整合了Redis、RabbitMQ、ElasticSearch等常用中间件, 根据生产环境开发经验而来不断完善、优化、改进中
238 0
|
存储 安全 中间件
阿里云中间件开源项目新版本发布 | 学习笔记
快速学习阿里云中间件开源项目新版本发布
503 0
阿里云中间件开源项目新版本发布 | 学习笔记
|
消息中间件 NoSQL 安全
|
canal SQL 消息中间件
阿里中间件--Canal框架实践
阿里中间件--Canal框架实践
818 0
|
存储 SQL Kubernetes
PolarDB-X 发布 2.1.0 版本,Paxos 重磅开源
2022年4月1号,PolarDB-X 正式开源X-Paxos,基于原生MySQL存储节点,提供Paxos三副本共识协议,可以做到金融级数据库的高可用和容灾能力,做到RPO=0的生产级别可用性,可以满足同城三机房、两地三中心等容灾架构。
PolarDB-X 发布 2.1.0 版本,Paxos 重磅开源
|
canal 存储 NoSQL
【Canal】数据同步的终极解决方案,阿里巴巴开源的Canal框架当之无愧!!
在当今互联网行业,尤其是现在分布式、微服务开发环境下,为了提高搜索效率,以及搜索的精准度,会大量使用Redis、Memcached等NoSQL数据库,也会使用大量的Solr、Elasticsearch等全文检索服务。那么,这个时候,就会有一个问题需要我们来思考和解决:那就是数据同步的问题!如何将实时变化的数据库中的数据同步到Redis/Memcached或者Solr/Elasticsearch中呢?
709 0
【Canal】数据同步的终极解决方案,阿里巴巴开源的Canal框架当之无愧!!