演示案例
- 下面是MySQL的表
- 下面是UDF的解析代码
- 定义对应的触发器
Canal开源技术
- canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)
- 开源参考地址有:https://github.com/liukelin/canal_mysql_nosql_sync
- 工作原理(模仿MySQL复制):
- canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
- mysql master收到dump请求,开始推送binary log给slave(也就是canal)
- canal解析binary log对象(原始为byte流)
- 架构:
- server代表一个canal运行实例,对应于一个jvm
- instance对应于一个数据队列 (1个server对应1..n个instance)
- instance模块:
- eventParser (数据源接入,模拟slave协议和master进行交互,协议解析)
- eventSink (Parser和Store链接器,进行数据过滤,加工,分发的工作)
- eventStore (数据存储)
- metaManager (增量订阅&消费信息管理器)
- 大致的解析过程如下:
- parse解析MySQL的Bin log,然后将数据放入到sink中
- sink对数据进行过滤,加工,分发
- store从sink中读取解析好的数据存储起来
- 然后自己用设计代码将store中的数据同步写入Redis中就可以了
- 其中parse/sink是框架封装好的,我们做的是store的数据读取那一步
- 更多关于Cancl可以百度搜索
- 下面是运行拓扑图
- MySQL表的同步,采用责任链模式,每张表对应一个Filter。例如zvsync中要用到的类设计如下:
- 下面是具体化的zvsync中要用到的类,每当新增或者删除表时,直接进行增删就可以了
本文地址:https://blog.csdn.net/qq_41453285/article/details/107190925
如对本文有疑问, 点击进行留言回复!!
荐 Mysql2020最新教程(高级部分)之存储引擎与简单的sql优化
大型互联网必问的MySQL面试题:MySQL存储与索引+事务和锁+性能优
网友评论