数据同步工具:Canal

大家好,欢迎来到本篇博客,博主是一名刚入大数据行业的小白,利用空闲的时间来分享自己所学的知识,帮助和博主一样刚处于起步阶段的同学,水平不高,若有什么错误和纰漏之处恳请大佬不吝赐教,目前个人博客只有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的详细介绍
感谢大家的支持,若有什么不正确的地方还请大家能及时的反馈,记得点赞收藏支持一下!在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1382771.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

ElasticSearch千万级数据同步方案

(原创)针对于将数据同步到ES中,有HttpHost、BulkProcessor等方式,怎么才能更高效的加载数据 在我开发测试过程中,一直觉得这些方式效率都不是很好 1、IndexResponse的方式,经过测试(Linux环境&a…

系统间数据同步方案

一.RabbitMQ分布式集群架构 设计集群的目的 允许消费者和生产者在RabbitMQ节点崩溃的情况下继续运行 通过增加更多的节点来扩展消息通信的吞吐量 1 集群配置方式 RabbitMQ可以通过三种方法来部署分布式集群系统,分别是:cluster,federation,shovel …

MySQL 数据同步

MYSQL 数据备份 背景:在本地开发时,经常需要将本地测试数据同步到服务器上,通过navicat 或者sqlyog 虽然可以将数据便捷的导入导出,但总是觉得比较麻烦 于是想通过直接拷贝mysql数据文件的方式,进行数据的同步。 操作步…

mysql和elastic search数据同步方案

方案一 利用es api实时写入es中 优点:实时性高,能灵活控制写入es的时间 缺点:同步方案与业务逻辑耦合,严重依赖于es api,破坏了原有业务程序逻辑 demo:https://blog.csdn.net/fanrenxiang/article/deta…

不同业务场景下数据同步方案设计

企业开发实践中通常需要提供数据搜索的功能,例如,电商系统中的商品搜索、订单搜索等。通常,搜索任务通常由搜索引擎担当。如Elasticsearch。而我们的原始数据为了安全性等问题通常存储在关系型数据库中。在搜索数据前,我们需要先将…

mysql-elasticsearch数据同步方案

es数据同步方案 前言方案对比 logstash方式安装配置启动测试 canal方式MQ方式 前言 上两篇文章介绍过EL的安装和使用,接下来,我们面临的问题是怎么把数据同步到es里,比如,商城的商品数据,商品需要搜索,所以…

1、数据同步方案设计

数据同步要解决2个问题,1是存量数据同步,2是增是数据同步。存量同步只需要进行一次,所以又叫离线同步,或批处理同步。增量同步要解决每时每刻的数据变化同步,要运行多次,所以又叫实时同步,流处理同步。 数据准实时复制(CDC)是目前数据同步中大量使用的技术,随着国产化…

几种常见的数据同步方式

数据仓库的特性之一是集成,即首先把未经过加工处理的、不同来源的、不同形式的数据同步到ODS层,一般情况下,这些ODS层数据包括日志数据和业务DB数据。对于业务DB数据而言(比如存储在MySQL中),将数据采集并导入到数仓中(通常是Hive…

DP1.4接口的PCB布局布线要求

DP接口即为DisplayPort接口,是由视频电子标准协会发布的显示接口。DP接口将在传输视频信号的同时加入对高清音频信号传输的支持,并且同时支持更高的分辨率以及刷新率。DP1.4通信端口规范新标准基于DP1.3规范,宽度不变但加入了显示压缩流技术&…

LoadRunner(2)

一、Controller 1.1场景设计 1.通过VUG打开 施压机器:发起请求的角色(用户本地电脑) 被压机器:处理请求的角色(服务器) 2.直接双击Controller 场景设计:需要关注三个部分 第一部分: 第二部分: 2.1运行场景…

[每周一更]-(第58期):选购佳能变焦镜头 EF-S 18-200mm F/3.5-5.6 IS的心得

参考地址: https://www.canon.com.cn/purchase/onlinesale/index3.html?typejdhttps://www.canon.com.cn/overview/efwidezoom.html 讲在买之前 由于没有买全画幅,买了残幅,好处是能选的镜头有限,不用太费钱了,需要…

教程 | 10分钟掌握手帐入门技能

亲,今天你画简笔画了吗? 如果没有在画纸上画,那就一起在手帐本上一展身手吧。 我先提供一点简笔素材: 1 2 3 手帐 有人说一入手帐深似海,从此笔纸要随行。 在日本,很多人都会随身带着一个被称为“手帐”的笔…

医院如何选择HIS及电子病历系统

近来有朋友来信问我:如何选择HIS及电子病历系统?我就从我个人的经历来浅谈这个问题,我是一名医护工作者,仅供参考。 如果是新建的医院首先对自身有一个清晰的定位,包括:品牌,价值,文化,理念。我们做成为一家什么样的医院?我们的品牌路线是什么线的?我们的核心价值观是什么?…

医院信息管理云平台源码 云HIS系统源码 4级电子病历系统

基层医院云HIS系统源码 高端商业his源码 有演示,可直接项目运营。 一款满足基层医院各类业务需要的云HIS系统。该系统能帮助基层医院完成日常各类业务,提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规…

大型EMR电子病历源码三甲医院医疗信息管理系统软件网络版

详情请点击查看 开发环境 :VS2010 C# ORACLE系统简介:1各种记录的书写,并可保留修改痕迹 在各种记录的书写过程中,根据系统提供的首次护理记录、一般护理记录、术前术后护理记录等模板,可方便、轻松地完成书写。上级…

医疗记录系统

医疗管理系统 | Dorian 项目介绍 📖 👉基于Springbootvueuni-app的医疗管理系统. 含平台主体微信小程序和web后台数据管理平台. 项目技术栈 ⭐️ 微信小程序(MedicalSystem_uniapp):uni-app Vue.js 后台管理系统(MedicalSystem_Web)&…

HIS医院EMR电子病历系统源码

1.新制作的电子病历添加到相应机构的病历模板列表中,默认是启用的,即该机构对应的一体化电子病历系统可以直接调用该模板运行相关业务。运营和管理用户可对已有的病历模板进行管理,对已有的病历模板进行查询、重新编辑、停用/启用、删除操作 …

住院管理系统

开发工具(eclipse/idea/vscode等):vs2017 数据库(sqlite/mysql/sqlserver等):sqlserver 功能模块(请用文字描述,至少200字):基于ASP.net的住院管理系统 (1)用户注册:用户首次登录该系统时需要提交用户注册。(2)用户登录:用户可以登…

医院病例管理系统

技术:Java、JSP等摘要:随着计算机技术、网络技术和通信技术的不断发展和普及,医院很多领域都运用这些先进的技术实现了数字化、信息化和网络化[1]。通过这些技术可以很大程度的提高工作效率,节省人力、物力资源,减少错…