大数据Canal(一):Canal介绍
Canal介绍
一、什么是Canal
Canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。
当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。
Canal目前没有独立的官网,可以在GitHub上下载和查看Canal文档,地址如下:https://github.com/alibaba/canal/wiki
二、Canal工作原理
1、MySQL主备复制原理
1.1、MySQL master 将数据变更写入二进制日志(binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)
1.2、MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
注意:中继日志是从服务器I/O线程将主服务器的二进制日志读取过来,记录到从服务器本地文件,然后从服务器SQL线程会读取relay-log日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致。
1.3、MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据
2、canal 工作原理
2.1、canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
2.2、MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
2.3、canal 解析 binary log 对象(原始为 byte 流)
注意:mysql-binlog是MySQL数据库的二进制日志,记录了所有的DDL和DML(除了数据查询语句)语句信息。一般来说开启二进制日志大概会有1%的性能损耗。
相关文章
- 大数据生态圈常用组件(二):概括介绍、功能特性、适用场景
- 大数据Hadoop生态圈介绍
- 大数据的简要介绍[通俗易懂]
- 大数据必学Java基础(六十五):阻塞队列介绍
- SPSS(二)SPSS实现多因素方差分析模型(图文教程+数据集)
- kitti数据集介绍_cifar10数据集下载
- 大数据必学Java基础(八十四):注解的案例介绍
- 大数据应用型产品设计方法及行业案例介绍(附110页PPT)
- ATAC-seq分析:数据介绍(2)
- 电脑上AppData数据迁移(解决C盘空间不足的问题)
- mongodb存储类型JSON数据文档统计分析介绍
- SQL数据查询之DQL语言介绍
- Spark入门实战系列–7.Spark Streaming(上)–实时流计算Spark Streaming原理介绍详解大数据
- Spark项目之电商用户行为分析大数据平台之(六)用户访问session分析模块介绍详解大数据
- LDA主题模型介绍详解大数据
- 大数据处理分析的工具介绍详解大数据
- Hive权限介绍详解大数据
- [问题解决]大数据量上载excel文件数据到SAP系统[ALSM_EXCEL_TO_INTERNAL_TABLE]详解编程语言
- 快速操作:Oracle中增加一行数据(oracle增加一行数据)
- 五角大楼研发新 AI:实时分析海陆空数据,可“预测未来”
- 用 Lua 操作文件中的数据
- 新型恶意程序 Snatch 曝光:进入安全模式加密数据向受害者勒索比特币
- 快速向Oracle数据库插入数据。(向oracle插入数据)
- 快速学会Neo4j REST API:打开新的数据存储世界(neo4jrest)
- 腾讯云 Redis云中数据存储专家(腾讯云redis介绍)
- MySQL中插入新数据的步骤介绍(c mysql插入新数据)
- MySQL快速数据导入利用Canal实现梦想(canal导入MySQL)
- 基于Canal与MySQL的数据同步实现(canal和MySQL)
- 如何优雅地存放Redis数据(存放redis数据)
- Roshi Redis新未来的数据存储模式(roshi redis)
- Redis集群实现存储更高层数据可用性的介绍(redis集群简介)
- JS巧妙获取剪贴板数据Excel数据的粘贴
- mysql数据同步出现Slave_IO_Running:No问题的解决方法小结