canal实现MySQL数据实时同步ES
发布时间
阅读量:
阅读量
1. 背景
项目所涉及的业务数据规模较大,各类业务表的数据量均达到千万级别。尽管已实施了分库分表策略,将每张表的数据量控制在300万以内,但整体查询效率仍无法满足实际需求。为有效提升数据检索速度,计划引入ES作为数据查询的解决方案。
2. 同步原理
canal 模拟 MySQL slave 的通信协议,将其自身伪装成 MySQL slave ,向 MySQL master 发送 dump 协议请求。
MySQL master 在接收到 dump 请求后,开始将 binary log 数据推送给 slave (即 canal )。
canal 对 binary log 对象(原始为 byte 流)进行解析,并将其转换为 json 格式。
Canal 客户端通过 TCP 协议或 MQ 方式监听 Canal 服务端,实现数据的同步至 ES 系统。
优点: 能够实现与业务代码的完全分离,支持对增量日志的订阅与处理。
缺点: 实时性相对较低,数据在 DB 中事务成功后才会开始传输至 canal ,存在一定的延迟。
3. 环境信息
| 名称 | 版本 |
|---|---|
| MySQL | 8.0.35 |
| elasticsearch | 7.17.9 |
| canal | 1.1.7 |
| jdk | 1.8 |
以MySQL数据库中ibds2.p
全部评论 (0)
还没有任何评论哟~
