背景

关于数据同步的方式有很多种,现在有一个场景需要将mysql数据库的数据主动同步到我们的工程中,并且能再mysql数据库客户端更改某一行的数据也能将数据同步到另一个数据库或者工程中,对于这种场景的使用我们应该怎么去实现呢?

我们从问题点去分析,

  1. 同步mysql数据库数据到工程中,这个很简单,那就是工程直接连接数据库直接读取。这不是主动是被动,这样的话那就肯定得数据库主动去触发了。
  2. 那这肯定要改动mysql的底层源码,或者mysql又提供接口,既然说到了这里,想想mysql的主从同步机制呢?
  • master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);
  • slave将master的binary log events拷贝到它的中继日志(relay log);
  • slave重做中继日志中的事件,将改变反映它自己的数据。
    这不就搞定了吗?? 写个中间件模仿slave不就搞定了?这是要自己造轮子,NO,面向搜索编程,这肯定得google一下。

canel 了解一下,直接用起来。

什么是canel?

  1. canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 也就是有新改变的数据日志的同步。
  2. 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。
  3. 基于日志增量订阅和消费的业务包括
    • 数据库镜像
    • 数据库实时备份
    • 索引构建和实时维护(拆分异构索引、倒排索引等)
    • 业务 cache 刷新
    • 带业务逻辑的增量数据处理

工作原理

  1. MySQL主备复制原理

    • MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)
    • MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
    • MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据
  2. Canel 工作原理
    • 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
    • MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
    • canal 解析 binary log 对象(原始为 byte 流)

真的不想写,烂泥巴不想打渔了!!!

下篇继续主从具体原理和canel 具体原理

数据同步神器Canel-day01相关推荐

  1. 阿里开源数据同步神器DataX异构数据源间数据同步同步MySQL与HDFS相互实战

    Datax 实战使用 继上一篇 阿里开源数据同步神器DataX异构数据源间数据同步基础介绍与快速入门之后的实战篇 1.MySQL-To-HDFS 环境 & 准备说明: 描述: 为了快速搭建测试 ...

  2. 离线数据同步神器:DataX,支持几乎所有异构数据源的离线同步到MaxCompute

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 概述 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlSer ...

  3. mysql获取最好成绩对应数据的其他项_开源数据同步神器——canal

    前言 如今大型的IT系统中,都会使用分布式的方式,同时会有非常多的中间件,如redis.消息队列.大数据存储等,但是实际核心的数据存储依然是存储在数据库,作为使用最广泛的数据库,如何将mysql的数据 ...

  4. 开源数据同步神器——canal

    前言 如今大型的IT系统中,都会使用分布式的方式,同时会有非常多的中间件,如redis.消息队列.大数据存储等,但是实际核心的数据存储依然是存储在数据库,作为使用最广泛的数据库,如何将mysql的数据 ...

  5. datax 定时执行多个job_数据同步神器Datax源码重构

    每日一句永远不要认为我们可以逃避, 我们的每一步都决定着最后的结局, 我们的脚步正在走向我们自己选定的终点.Do not ever think about that we can escape , o ...

  6. Cloudcanal数据同步神器

    一.背景与需求 最近有个OLAP的需求,我们需要将MySQL的一些数据(这种数据有一种特性就是一旦产生记录,以后不会再进行修改.删除操作,例如登录日志.操作日志等诸如此类).这种数据特性正好符合Cli ...

  7. 推荐一个开源数据同步神器,支持多种数据源和预警功能!

    DBSyncer是一款开源的数据同步中间件,提供MySQL.Oracle.SqlServer.PostgreSQL.Elasticsearch(ES).Kafka.File.SQL等同步场景. 支持上 ...

  8. 机器学习第6天:数据可视化神器--Matplotlib

    文章目录 一.Matplotlib简介 二.散点图 第1步:导入数据 第2步:拆分成训练集和测试集 第3步:使用简单线性回归模型来训练训练集 第4步:绘制散点图 二.线图 三.等高线图 第1步:定义一 ...

  9. mysql同步数据到另一张表_mysql:Otter跨机房数据同步(单向)

    重要说明:需要同步的表必须要有主键 主键 主键 otter是一款基于Java且免费.开源基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库的解决方案. Otter目前 ...

最新文章

  1. ADT7410 ±0.5℃精度温度传感器
  2. Eclipse单元测试Android编程,在Eclipse中进行Android单元测试-Fun言
  3. 机器学习笔记(十六)强化学习
  4. HadoopIO和javaIO的区别
  5. 双系统linux长时间黑屏,win10 ubuntu 双系统安装黑屏问题
  6. 建立ssr服务器_如何从零打造一款轻量且天然支持SSR的个人博客系统?
  7. 多线程中线程参数的传递,不要使用局部变量
  8. ios Image裁剪成圆形的方法
  9. EasyUi各种消息框
  10. 向iis注册framework命令
  11. 建武28a对讲机最大距离_小米对讲机再出新品:不但价格低,还能一键写频
  12. [picture_scrapy] 关于美女爬虫的一个集合
  13. linux终端哪个好看,关于linux:Linux-终端最全推荐建议收藏
  14. 将指定 Word 的页眉页脚复制到其他文件中
  15. 女生学前端适合么?新人应该怎么学习?
  16. 微信服务号认证小程序
  17. 天津财经大学珠江学院考计算机二级,【2019年12月天津计算机二级考试报名入口已开通】- 环球网校...
  18. MATLAB(3)MATLA 求极限 求积分 求微分 求级数的和
  19. td nowrap 属性 中多个input 不换行 水平排列
  20. 仿京东轮播的广告展示栏

热门文章

  1. Controlled Markov Processes and Viscosity Solutions (chapter 1)
  2. 年轻人学什么技术有前途?
  3. SQL获取上个月1号,本月1号,下个月1号,本月天数 [sql语句]
  4. ZYNQ FPGA实验——DAC FIFO实验
  5. 什么是微信防火墙_为什么越来越多人用网络股票配资?配资平台困扰你的是太多了?不,是它!...
  6. 电路中的三极管和MOS管
  7. Linux开发板SD卡检测
  8. MPEG音频压缩基础
  9. 阿里云不限速网盘,开始内测
  10. 16进制 转为图片 php_十六进制编辑器(010 Editor)官方版下载_十六进制编辑器(010 Editor) v11.0中文汉化版64位...