# canal_mysql_elasticsearch_sync
**canal支持自动同步到Elasticsearch。
基于 *canal* 的 *Mysql* 与 *Elasticsearch* 实时同步的 *javaweb* 服务。
canal是阿里巴巴mysql数据库binlog的增量订阅&消费组件。
## 工作原理
### 全量
暴露Http接口
> 读取数据库会加**读锁**
> 主键必须为数字类型
#### 过程
1. 首先会根据所给的数据库主键字段,拿到最大的主键数字max_id;
2. 设*pk*=min_id(默认是数据库中的主键最小值);
2. 加读锁🔐,从数据库中取出*pk* —— *pk*+*stepSize* 大小的数据(默认500)的数据;
3. 插入到Elasticsearch中;
4. 释放读锁🔐,pk累加*stepSize*,循环3.操作,直到*pk*>*max_id*
### 增量
循环监听canal通过binlog同步过来的event事件,区别增删改进行与之对应的Elasticsearch的操作。
> 目前只解析了 insert、update、delete,其它数据库操作会被忽略
## 默认相关字段映射
<table class="bbcode">
<tr>
<td>Mysql字段类型</td>
<td>Elasticsearch类型</td>
</tr>
<tr>
<td>char</td>
<td>{"type": "text", "fields": {"keyword": {"type": "keyword", "ignore_above": 256}}</td>
</tr>
<tr>
<td>text</td>
<td>{"type": "text", "fields": {"keyword": {"type": "keyword", "ignore_above": 256}}</td>
</tr>
<tr>
<td>blob</td>
<td>{"type": "text", "fields": {"keyword": {"type": "keyword", "ignore_above": 256}}</td>
</tr>
<tr>
<td>int</td>
<td>{"type": "long"}</td>
</tr>
<tr>
<td>date</td>
<td>{"type": "date"}</td>
</tr>
<tr>
<td>time</td>
<td>{"type": "date"}</td>
</tr>
<tr>
<td>float</td>
<td>{"type": "float"}</td>
</tr>
<tr>
<td>double</td>
<td>{"type": "float"}</td>
</tr>
<tr>
<td>decimal</td>
<td>{"type": "float"}</td>
</tr>
<tr>
<td>其它</td>
<td>{"type": "text", "fields": {"keyword": {"type": "keyword", "ignore_above": 256}}</td>
</tr>
</table>
## 注意事项
- Mysql的binlog格式必须为**ROW**
- 因为有行锁,Mysql中table使用的存储引擎须为**InnoDB**
- 由于使用binlog进行增量同步,和数据库主从类似,不可避免的会有一定的主从延迟,延迟时间取决于机房网络、机器负载、数据量大小等
- Elasticsearch支持的版本为**5.x**
- canal已测试版为**v1.0.24**,其他版本请自行测试
- 增量同步只监听了 **INSERT、UPDATE、DELETE**,其它如建表、删表等尚未支持
- 建议Elasticsearch的mapping手动来创建,因为默认的创建方式不能保证满足业务需求
没有合适的资源?快使用搜索试试~ 我知道了~
基于canal的mysql和elasticsearch实时同步方案,支持增量同步和全量同步

共46个文件
java:31个
xml:6个
sh:2个

0 下载量 16 浏览量
2024-06-17
10:39:12
上传
评论
收藏 57KB ZIP 举报
温馨提示
# canal_mysql_elasticsearch_sync **canal支持自动同步到Elasticsearch。 基于 *canal* 的 *Mysql* 与 *Elasticsearch* 实时同步的 *javaweb* 服务。 canal是阿里巴巴mysql数据库binlog的增量订阅&消费组件。 ## 工作原理 ### 全量 暴露Http接口 > 读取数据库会加**读锁** > 主键必须为数字类型 #### 过程 1. 首先会根据所给的数据库主键字段,拿到最大的主键数字max_id; 2. 设*pk*=min_id(默认是数据库中的主键最小值); 2. 加读锁,从数据库中取出*pk* —— *pk*+*stepSize* 大小的数据(默认500)的数据; 3. 插入到Elasticsearch中; 4. 释放读锁,pk累加*stepSize*,循环3.操作,直到*pk*>*max_id* ### 增量 循环监听canal通过binlog同步过来的event事件,区别增删改进行与之对应的Elasticsearch的操作。
资源推荐
资源详情
资源评论

格式:zip 资源大小:55.6KB




















格式:pdf 资源大小:604.6KB 页数:8









收起资源包目录


















































































共 46 条
- 1
资源评论


小蜜蜂vs码农
- 粉丝: 2413
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 探究计算机网络管理及安全技术.docx
- 探究微课在中职计算机基础教学中的运用.docx
- 新网络技术标准带来的改变探讨.docx
- 金融行业网络安全等级保护实施指引-基本要求.pdf
- PLC课程设计说明书.doc
- 模具企业管理中采用项目管理方法和工具.doc
- 如何用spss进行二元和多元logistic回归分析.doc
- 大数据时代企业会计信息化风险防范对策探讨.docx
- 面向对象程序设计方案实验.doc
- 浅析计算机网络的工程管理在水利建设中的应用.docx
- 16.玩转大学ppt高档模板-ios毛玻璃扁平化时尚ppt模板图表图片.ppt
- 调度信息化系统在煤矿设备管理中的应用.docx
- Bomber网络技术有限公司商业.doc
- 松下PLC编程软件FPWINGR操作简介.ppt
- 2018年高考数学一轮复习-第十二章-推理与证明、算法、复数-12.3-算法与程序框图-文-新人教A版.ppt
- DB2业务规则的应用实践(2).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
