大家好,欢迎来到本篇博客,博主是一名刚入大数据行业的小白,利用空闲的时间来分享自己所学的知识,帮助和博主一样刚处于起步阶段的同学,水平不高,若有什么错误和纰漏之处恳请大佬不吝赐教,目前个人博客只有CSDN:https://zhenyu.blog.csdn.net/,感谢大家的支持,谢谢
送给大家一句话:今日事,今日毕

本篇博客主要讲解:数据同步工具:Canal

目标:

  • 了解Canal

Canal

  • 背景
  • 什么是canal
  • Canal原理
    • MySQL主备复制原理
    • canal 工作原理
  • 架构
  • 小结

背景

-------早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分版本的日志解析

基于日志增量订阅&消费支持的业务:

  • 数据库镜像
  • 数据库实时备份
  • 多级索引 (卖家和买家各自分库索引)
  • search build
  • 业务cache刷新
  • 价格变化等重要业务消息

什么是canal

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

译意: 水道/管道/沟渠

语言: 纯java开发

定位: 基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql

关键词: mysql binlog parser / real-time/ queue&topic/增量日志/增量数据订阅&消费

理解:同步增量数据的一个工具

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

canal官网

Canal原理

MySQL主备复制原理

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

mysql的binlog
它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间。主要用来备份和数据同步。
binlog 有三种: STATEMENT、ROW、MIXED
STATEMENT 记录的是执行的sql语句
ROW 记录的是真实的行数据记录
MIXED 记录的是1+2,优先按照1的模式记录

名词解释:
什么是中继日志
从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后从服务器SQL线程会读取relay-log日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致

canal 工作原理

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

架构

  • server 代表一个 canal 运行实例,对应于一个 jvm
  • instance 对应于一个数据队列 (1个 canal server 对应 1…n 个 instance )
  • instance 下的子模块
    • eventParser: 数据源接入,模拟 slave 协议和 master 进行交互,协议解析
    • eventSink: Parser 和 Store 链接器,进行数据过滤,加工,分发的工作
    • eventStore: 数据存储
    • metaManager: 增量订阅 & 消费信息管理器

小结

--------以上就是Canal的详细介绍
感谢大家的支持,若有什么不正确的地方还请大家能及时的反馈,记得点赞收藏支持一下!

数据同步工具:Canal相关推荐

  1. k8s集群下搭建数据同步工具-canal:canal-admin篇

    k8s集群下搭建数据同步工具-canal:canal-admin篇 前言 容器化 canal-admin 环境准备 k8s集群创建pod canal-admin 前言 本文使用v1.1.4版本的can ...

  2. 大数据同步工具Canal

    目录 1 什么是canal 2 canal能做什么 3 如何搭建canal 3.1 首先有一个MySQL服务器 3.2 安装canal 4 Java客户端操作 5 总结 6 ClientAdapter ...

  3. 数据同步工具Canal

    Canal介绍 1.应用场景 在前面的统计分析功能中,我们采取了服务调用获取统计数据,这样耦合度高,效率相对较低,目前我采取另一种实现方式,通过实时同步数据库表的方式实现,例如我们要统计每天注册与登录 ...

  4. php阿里的同步工具canal,基于阿里的Canal实现数据同步

    一.开启同步数据库的binlog功能 (1)开启同步数据端的数据库服务(比如我的将一号虚拟机上的mysql数据库作为同步操作数据库) systemctl start mysql.service mys ...

  5. canal - 数据同步工具

    一.应用场景 在前面Echarts - 实现图表显示中,我们使用了服务调用(统计表中的信息通过调用用户模块服务来获取)获取统计信息,这样耦合度高,效率相对较低,目前有另一种方法,通过实时同步数据库表的 ...

  6. 【硬刚大数据】大数据同步工具之FlinkCDC/Canal/Debezium对比

    欢迎关注博客主页:微信搜:import_bigdata,大数据领域硬核原创作者_王知无(import_bigdata)_CSDN博客 欢迎点赞.收藏.留言 ,欢迎留言交流! 本文由[王知无]原创,首发 ...

  7. 数据同步工具Sqoop

    大数据Hadoop之--数据同步工具Sqoop Sqoop基本原理及常用方法 1 概述 Apache Sqoop(SQL-to-Hadoop)项目旨在协助RDBMS(Relational Databa ...

  8. 数据同步工具的研究(实时)

    数据同步工具的研究(实时同步): FlinkCDC.Canal.Maxwell.Debezium --2023年01月17日 --Yahui Di 1. 常用CDC方案比较 2. FlinkCDC F ...

  9. Linux的rsync远程数据同步工具

    Rsync(remote synchronize) 是一个远程数据同步工具,可以使用"Rsync算法"同步本地和远程主机之间的文件. rsync的好处是只同步两个文件不同的部分,相 ...

  10. ETL的数据同步工具调研(持续更新中)

    扯白了,数据同步工具就是"导数据 "的 名称 社区响应 国内使用情况(以前程无忧为参考) SQOOP 更新缓慢,对于hbase2.x以上版本使用时需要老版本的jar包 9页 Dat ...

最新文章

  1. java中后台是那一部分_一套Java后台管理系统,拿来即用(附项目地址)
  2. json对象与字符串互转方法
  3. 【Paper】Network Dissection: Quantifying Interpretability of Deep Visual Representations跑源码遇到的问题
  4. HDU - 6598 Harmonious Army (最小割)
  5. java floatmath_《Java1.doc
  6. IOS中的事件响应链,事件冒泡机制基本了解
  7. leetcode990. 等式方程的可满足性
  8. 现任明教教主DM×××的3G链路备份
  9. 【渝粤教育】国家开放大学2018年春季 8647-21T工程经济与管理 参考试题
  10. RestTemplate设置代理
  11. 什么是计算机文化它与计算机技术有何区别,什么叫计算机文化?
  12. 详解后端工程师必看学习路线图(含初、中、高阶)
  13. 自己整理的运维面试题,必须会。
  14. 动手| 一个人脸识别的K8s部署实践
  15. win10安装mmcv和mmcv-full报错
  16. java手机游戏ios_我的世界JAVA版本ios版
  17. tensorflow入门教程(三十五)facenet源码分析之MTCNN--人脸检测及关键点检测
  18. 【多校训练】2021HDU多校4
  19. Jquery基本教程(背还是要背的)
  20. 「开源学」:如何分门别类理解开源

热门文章

  1. 输出教学日历表c语言程序,C语言程序设计教学日历2011版.doc
  2. [ALAPI]免费聚合视频无水印接口分享
  3. 软件自动化测试的学习路线
  4. noi题目答案c语言,NOI2019基础知识题库
  5. Java三大主流框架
  6. mini-pcie接口(EC20和N720)
  7. stm32_电容触摸按键
  8. 西门子mag6000接线_西门子(SIEMENS)妙声力系列电磁流量计变送器MAGFLO MAG5000 MAG6000中文使用手册.pdf...
  9. Intel ICH9 sata驱动
  10. 软件开发成本估算方法