Advertisement

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)

还没有任何评论哟~