千家信息网

基于canal client实现canal同步es的示例分析

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这期内容当中小编将会给大家带来有关基于canal client实现canal同步es的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。canal是阿里开源的一
千家信息网最后更新 2025年12月03日基于canal client实现canal同步es的示例分析

这期内容当中小编将会给大家带来有关基于canal client实现canal同步es的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

canal是阿里开源的一款纯java语言的mysql增量订阅工具,主要是伪装成slave节点,向mysql发送 dump协议官方原理如图:

官方的解释:

server代表一个canal运行实例,对应于一个jvm

instance对应于一个数据队列 (1个server对应1..n个instance)

个人是这么理解的instance当做一个mq中的topic队列(kafka中的broker),canal client相当于mq中的消费者.instance接收到数据通过parse解析之后经过sink进行数据加工,最后存储到sore中,由canal client来进行消费.

由于业务数据量较大,单表超亿,根据实际业务对数据库进行分库分表,es中存储主键和账号对应关系,访问数据库时先送es中获取主键再查db,这样可以直接打到对应分片上秒回

起初打算采用官方提供的工具实现,后续发现官方的不太符合我们的需求(或许是自己没搞明白官方的工具),并切我们是分库分表的,按照官方的配置太过繁琐.一个表到底层就分了几百张表,所以决定就基于canal client自己实现了同步es,全量和增量.不过踩了不少得吭.

采用es的bulk api批量更新 .设置自定义模板,后续翻阅官方的源码,其实大致也是这么实现的,只不过官方的具有通用性而已.

启动方法:

连接canal server代码:

解析binlog的代码也很简单,不过自己实现的不具备通用性,勿喷:

将数据进行组装批量提交:

就这个不困扰了.es和msyql总是差那么10-100条不等,后续找到的原因,由于设置批量是1000,而数据库更新操作tps较低,所以造成两者之间数据延时.将批量数逐个降低测试最后调整到50批次,es和mysql数据时延降低到毫级了.

全量同步的较为简单.个人是这样实现的.首先将mysql中20亿数据量导出到文本文件,我们只需要主键和账号两个字段即可,并且是分库分表的,导出非常快.1亿的数据量30秒以内全部导出.然后通过缓冲流一行一行读取文件,调用bulk api批量入es,es 5个数据节5分片一副本,单节点40核物理机 内存512G jvm设置31G raid0 sas盘,1亿数据量基本5分钟以内就可导入es中,目前线上运行2月没发现异常.

上述就是小编为大家分享的基于canal client实现canal同步es的示例分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

数据 官方 分析 同步 分库 分表 工具 数据库 示例 一行 业务 个人 代码 内容 增量 文件 节点 账号 通用性 队列 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 ftp上传数据库出现错误 实时数据库技术协议 供应链管理系统软件开发价格 三级网络技术交换机大题 腾讯会议连接不到服务器 数据库理论在中国的发展 常熟正规网络技术市场价格 数据库原理 考研 香肠派对服务器修复补偿 是什么负责统筹协调网络安全工作 南京亿赢网络技术 无法在数据库查到药品说明书 网络技术流量模式 nginx 流媒体服务器 服务器的目录安全性 如何建立网络安全长效机制 千千静听歌词服务器2022 大连软件开发工业园有哪些 web服务器无法调用本地资源 mysql是软件还是数据库系统 黑客网络攻防及网络安全实战 华为手机一直正从服务器 天津软件开发岗待遇 计算机软件开发规范2007 图片数据库管理系统 嵌入式开发与软件开发哪个好 数据库超时设置 济南有实力的浪潮存储服务器批发 千千静听歌词服务器2022 mysql是软件还是数据库系统
0