我是靠谱客的博主 温婉夏天,最近开发中收集的这篇文章主要介绍MySQL增量数据同步 Canal,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

github官方地址:https://github.com/alibaba/canal

canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。

基于日志增量订阅和消费的业务包括

数据库镜像
数据库实时备份
索引构建和实时维护(拆分异构索引、倒排索引等)
业务 cache 刷新
带业务逻辑的增量数据处理
当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x在这里插入图片描述
MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)
MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据

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

在这里插入图片描述
MySQL向canal推送binlog日志 服务端接收到消息,然后客户端对消息进行处理,可以进行增量的同步写入到第三方的存储之中,也可以将数据写入到中间件,进行异步解耦消费。
这种可以实现异构数据处理,原先的MySQL的log直接扔给es或者redis是不能直接使用的,通过canal的再次开发转换即可
canal是数据增量同步的,对于以前的数据,还需要再进行一次全量的同步

最后

以上就是温婉夏天为你收集整理的MySQL增量数据同步 Canal的全部内容,希望文章能够帮你解决MySQL增量数据同步 Canal所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部