MySQL 与 Redis 增量数据同步方案

in TCEH with 0 comment

方案1

应用层面定时扫表。这种方案严重影响数据库性能,不建议使用。

方案2

使用 Trigger + UDF 实现

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

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

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

方案3

解析 binlog

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

MySQL主备复制原理

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

canal 工作原理