基于Canal的mysql数据库同步ElasticSearch⽅案实现环境搭
基于Canal的mysql数据库同步ElasticSearch⽅案实现环境搭建
⼀、引⽂
在互联⽹业务系统中,由于数据量级⼤,涉及B端商家&C端客户等原因,很多情况下需要针对⽣产数据库进⾏数据异构,如果通过程序等⽅式进⾏开发,开发量⼤且业务耦合度较⾼。基于阿⾥开源的Canal开源框架,可以实现mysql数据秒级甚⾄毫秒级的同步和灵活配置化异构数据,其中canal-adapter模块已经实现了es、hbase、rdb等⽬标源的适配。本⽂主要介绍如何搭建mysql-->canal-->es的数据同步⽅案。
⼆、主要步骤
1、环境安装
JDK安装(1.8+版本)
mysql安装
ElasticSearch安装
这⾥重点介绍⼀下elasticSearch的安装,⾸先注意,此处选择的canal-1.1.4版本不⽀持elasticSearch-7.*.*以上版本,可以选择6.*.*版本安装,本⽂选择的是elasticSearch-6.1.3版本,后⾯选择的ik分词器,也必须和elasticSearch的版本保持⼀致,否则可能会出现不兼容的情况。
下载:
安装
zip包不需要安装,直接解压即可。
mysql下载配置
运⾏
安装elasticsearch-head的前提,需要安装node和grunt:
grunt安装:在安装完node后,直接执⾏npm install -g grunt-cli 安装grunt ,执⾏grunt -version即可查看安装的grunt版本号;
elasticsearch参数配置修改:
在elasticsearch-6.1.3的config⽬录下,修改l,在最后增加以下配置,以便elasticsearch-head可以访问es服务:
#增加新参数,这样head插件可以访问es
node.master: true
node.data: true
可以⾃⾏调整node和cluster等配置:
cluster.name: es-63-crm
node.name: node-101
network.host: 0.0.0.0
http.port: 9200
建⽴java⼯程,引⼊spring-data-elasticsearch相关依赖,基于ElasticsearchTemplate直接进⾏创建、更新、删除index等操作:
ik分词器安装(可选),elasticsearch默认分词器采取单个字分词,效果较差,可以集成IK分词器,需要和elasticsearch版本保持⼀致,此处我们同样选择6.1.3版本,直接选择zip包,下载后解压⾄elasticsearch-6.1.3\plugins\ik⽬录下(ik⽂件夹需要⾃⾏创建)。关于分词器的配置优化,此处不做展开讨论,可以⾃⼰通过elasticsearch-6.1.3\plugins\ik\congfig⽬录下的l配置⽂件进⾏调整。
重新启动elasticsearch,即可看到如下效果,⾄此关于elasticsearch环境搭建已经结束。
canal安装
本⽂选择的canal版本为1.1.4,主要模块包括canal.deploy-1.1.4、canal.adapter-1.1.4、canal.admin-1.1.4:
canal.deploy:canal服务端功能,负责解析mysql源数据库binlog⽇志;
canal.adapter:将读取出来的数据与⽬标数据存储源进⾏匹配,⽬前⽀持elasticsearch、hbase、rdb等三种模式;
canal.admin:canal管理端⼯具,⽀持⾯向WebUI的canal管理能⼒;
在下载过程中,由于canal-adapter包较⼤,⽹速较慢,会出现下载超时问题,可以直接将整个canal源码打包下载后倒⼊IDE,⾃⾏编译成包。(利⽤maven打包,需要注意将默认的maven仓库地址修改为你⾃⼰所在公司的私服仓库,否则可能会出现遇到报错。)
canal参数配置
canal-deploy配置
参数主要配置在conf⽬录下的canal.properties和canal_local.properties(window下以local配置为准)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。