MySQL数据增量导入ES思路

一句话描述:利用MySQL Binlog+Kafka即可实现

MySQL Binlog

MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。

binlog日志有两个最重要的使用场景。

  • mysql主从复制:mysql replication在master端开启binlog,master把它的二进制日志传递给slaves来达到master-slave数据一致的目的。
  • 数据恢复:通过mysqlbinlog工具来恢复数据。

binlog日志包括两类文件:

  • 二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件。
  • 二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句select)语句事件。

利用MySQL Binlog+Kafka传递数据变更消息

场景:想要统计新订单的实时增加情况?想要实时跟踪库存的变化?想要订阅业务数据库的变更?下游业务希望实时感知数据库的变更,但频繁查询增量数据又影响业务数据库性能。如何又快又好的做好这些事,而又不影响线上数据库的性能?

实现思路:代码对接上游业务数据库,实时对Binlog数据分析、解析、PB格式序列化和压缩后,将数据库变更推送到Kafka。下游各应用消费Kafka的数据从而实时获取上游业务库的数据变更。

这样,如果下游系统是使用ES系统的话,就可以再message system注册成为consumer,一旦上游数据库产生变更,就可以及时获取到kafka发来的消息,将mysql数据库变更同步到elasticsearch库里。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容