前言

canal是阿里开源的一款用于同步mysql数据到其他数据存储的中间件,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

在搭建mysql服务器主从同步的时候,我们知道,备份服务器如果需要同步master的数据,其底层实现原理是salve监听master的bin_log日志文件,而canal的实现借用了这一思想,将自己的服务伪装成slave服务监听bin_log,从而将监听到的master服务器的数据同步到自己的消息管道,然后再输送给特定的其他数据存储服务器

借用官方的一张图,原理如下图所示,canal经过了多个版本的迭代,支持的同步数据中间件越来越多,比如es,hbase等,实际可以根据业务需求进行选择使用,可参阅官方wiki:https://github.com/alibaba/canal/wiki

工作原理

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

canal实现mysql数据实时同步es相关推荐

  1. canal 实现mysql 数据实时同步

    https://github.com/alibaba/canal 文章目录 一.工作原理: 二.准备工作: 三.启动canal server(以docker为例) 四.创建client 1.clien ...

  2. binlog流程 mysql_小米 MySQL 数据实时同步到大数据数仓的架构与实践

    背景MySQL由于自身简单.高效.可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,MySQL的相关操作会变的非常迟缓:如果这时还有实时BI展示的需求,对于mysql来说 ...

  3. 小米 MySQL 数据实时同步到大数据数仓的架构与实践

    背景 MySQL由于自身简单.高效.可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,MySQL的相关操作会变的非常迟缓:如果这时还有实时BI展示的需求,对于mysql来 ...

  4. 小米技术分享:Mysql数据实时同步实践

    背景 MySQL由于自身简单.高效.可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,MySQL的相关操作会变的非常迟缓:如果这时还有实时BI展示的需求,对于mysql来 ...

  5. mysql 数据实时同步至sql server

    方式一 使用mysql插件udf 下载 mysqludf https://github.com/mysqludf/lib_mysqludf_sys 编译适合当前内核的源码 把lib_mysqludf_ ...

  6. Mysql数据实时同步实践

    关于小米内部使用的数据库你知道多少?(文末有福利) 往期文章回顾:Flink流式计算在节省资源方面的简单分析 背景 MySQL由于自身简单.高效.可靠的特点,成为小米内部使用最广泛的数据库,但是当数据 ...

  7. oracle和mysql数据实时同步_异构数据源的CDC实时同步系统——最终选型实战

    引言: <异构数据源的CDC实时同步系统> 系列第一篇 (已完成) <零编码打造异构数据实时同步系统--异构数据源CDC之2> 系列第二篇(已完成) <零编码打造异构数据 ...

  8. mysql数据实时同步:Canal安装部署、kafka安装、zk安装、mysql安装、Canal Server+Canal Client HA,Canal+mysql+Kafka,相关验证(学习笔记)

    目录 Canal安装部署 1.1. 服务器准备 1.2. 设置主机名并配置hosts 1.3. 免密设置 1.4. 设置ntp时间 1.5. 关闭防火墙 1.6. 关闭selinux 1.7. 安装J ...

  9. Mysql 数据实时同步hbase

    一.前言 要实时同步数据,首先要能实时的监控到数据库数据的变化,可以使用canal.Maxwell 等工具完成.我选用canal,因为它更灵活,更合格我的项目需求. 二.通过canal监控数据库数据变 ...

最新文章

  1. Kafka主题体系架构-复制、故障转移和并行处理
  2. superset的安装和使用--docker
  3. SQL 与oracle数据同步之 链接服务器
  4. php168站内统计,PHP168整站系统0DAY
  5. python anova_anova_lm()python:它适用于哪种模型类型?
  6. OpenCV学习笔记之掩码操作
  7. C 语言,你真的懂递归了吗?
  8. 由二分查找算法学习算法的时间复杂度
  9. 5款WordPress推荐文章幻灯片插件
  10. java内部邮件系统_java 图形界面 邮件系统
  11. Python工作笔记003---正则中的re.I re.M_以及m.group和m.groups的解释
  12. Python不使用int()函数把字符串转换为数字
  13. Reveal查看任意app的高级技巧
  14. java异常机制throwable
  15. [Houdini 程序化生成] 基于UV的生成工具
  16. Android国家区号 中英文
  17. 软硬一体的算法实践,阿里云如何以算法实现场景 “再创新”?
  18. python爬房源信息_python爬虫获取链家二手房源信息
  19. oracle让电脑变卡以及解决方法
  20. 零钱兑换(完全背包)

热门文章

  1. 在php中使用CKEDITOR在线编辑器
  2. 小例子学习C#扩展方法
  3. 环形buffer缓冲区
  4. oracle日常维护(不断更新)
  5. 迅游科技拟作价27亿元收购移动应用开发商狮之吼
  6. SpringMVC之HelloWorld
  7. iOS网络层架构设计分享
  8. hadoop rpc客户端初始化和调用过程详解
  9. Oracle中 drop user 和 drop user cascade 的区别
  10. 区块链入门与去中心化应用实战 之一 第2章 区块链技术的核心概念和原理