MySQL 与 Redis 增量数据同步方案

in TCEH

应用层面定时扫表

可以通过查询备份库比对 id ,判断是否存在新数据。有的话,再取出来存到 Redis 。数据量大的话,延时会比较高。

使用 Trigger + UDF 实现

UDF(user defined function),即用户自定义函数。是MySQL的一个扩展接口。

大致流程:使用触发器监听表数据变化,触发之后调用UDF函数,可以把数据写入到 Redis 中,从而达到同步的效果。

触发器基于行来触发,如果变更的数据集非常大的话,效率会很低。

解析 binlog

也就是模拟 master-slave 中的 slave 解析 binlog 日志文件。当然了,自己写代码解析 binlog 不太现实。因为需要对 MySQL 及 binlog 非常了解且工作量巨大。好在有大公司成熟的开源产品帮助我们解决这个问题。

MySQL主备复制原理

Canal
Canal 是阿里巴巴旗下的一款开源项目,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。

canal 工作原理