利用 MySQL 的 Binlog 日志,通过消息队列消费变化来同步至 ES
优点
-
性能提升
也是异步处理,减少了接口同步等待的时间
-
无侵入性
不需要修改原有的业务逻辑,原系统对此无感知 -
数据一致性
MySQL Binlog 可以精准捕捉到数据库的所有变更 -
容错性
通常搭配 MQ 使用,在网络波动下仍然能够重试,保证数据的最终一致;并且 MQ 还具有一定的削峰作用,对 ES 写入较友好
缺点
- 系统复杂度
需要维护 Binlog 日志监听和消息队列系统,增加了系统的复杂度 - 延迟问题
“准实时”同步,但是其中涉及到不同组件间的网络传输较多,相比于直连写入 ES 延迟较大
实现方式
- MySQL Binlog 日志开启
- Binlog 监听器配置
- 消息队列集成,确保 Binlog 变更能够发送到消息队列中
- 消费者逻辑开发,从消息队列中读取 Binlog 并转换成 ES 可以理解的格式