基于 Canal 的MySQL与ElasticSearch数据同步
使用的环境版本
- canal-deployer 1.18
- canal-adapter 1.18
- MySQL 8.4
- ElasticSearch 7.13.2
环境准备
ElasticSearch 与 kibana 未安装的可以看这篇,windows 安装 Elasticsearch_windows安装elasticsearch-CSDN博客
MySQL
- 确认开启binlog
windows下找到MySQL的安装目录,修改 my.cnf
- 添加内容
1 | [mysqld] |
重启MySQL
验证 binlog 是否已开启, Value的值显示未 ON 则表示已开启
1 | SHOW VARIABLES LIKE 'log_bin'; |
- 在MySQL单独为canal建立一个新账户并授权
1 | CREATE USER canal IDENTIFIED BY 'canal'; |
Canal-deployer
- canal下载地址Releases · alibaba/canal,canal.deployer 和 canal.adapter 都需要下载

- 将下载的压缩包解压到目录,
进入canal.deployer-1.1.8\conf\example,打开instance.properties,修改数据库相关配置信息

3. 在\canal.deployer-1.1.8\bin目录下,输入cmd打开命令提示符

4. 在 cmd 中输入 startup.bat 启动canal-deployer
注意:一定要在bin目录下执行startup.bat,否则会报错无法创建日志文件
Canal-adopter
- 解压文件并进入canal.adapter-1.1.8\conf\bootstrap.yml,将其中的内容全部注释掉,否则提示XX表找不到

2. 再修改canal.adapter-1.1.8\conf\的 application.yml文件,
canal.properties 是 canal.deployer-1.1.8\conf下的文件

这里的坑,一般是MySQL的账号密码不对,或者给的es链接没有“http://”前缀
- 修改在application.yml中配置的数据源 es7 文件夹的内容,es监听哪个表,创建对应的tablename.yml,并且加入对应的sql映射

1 | dataSourcekey:defaultDS #源数据源的key,对应上面配置的srcDataSources中的值 |
在kibana中创建ES的表索引
记事本打开canal.adapter-1.1.8\bin\startup.bat
将CLASSPATH分号隔开的部分前后交换位置

在\canal.adapter-1.1.8\bin目录下,输入cmd打开命令提示符,在 cmd 中输入 startup.bat 启动 canal-adapter
到此为止,就完成了MySQL和ElasticSearch的Canal同步连接打通
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 TooonRan's Blog!
评论

