心得
闲来无事看到阿里巴巴的canal可以增量同步mysql的数据到es,然后就去尝试搭建了一下。然后由于自己的自作聪明和傻浪费了一个晚上时间。再次分享一下自己的心得体会,如果有人也走了这个弯路记得避免踩这些坑。
搭建流程
1、创建canal-server端
https://github.com/alibaba/canal/wiki/QuickStart
github上面已经写得很清楚了,按照教程走就行。
踩坑:
1.1 :没有执行下面操作,让root可以以多种ip方式访问
CREATE USER canal IDENTIFIED BY ‘root’;
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘canal’@’%’;
– GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ ;
FLUSH PRIVILEGES;
1.2 需要开启bin模式,通过命令查看show master status,如果没有则下面my.ini文件修改。
log-bin=mysql-bin #添加这一行就ok
binlog-format=ROW #选择row模式
server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复
2. 搭建adapter适配器端
https://github.com/alibaba/canal/wiki/Sync-ES
踩坑:
2.1 es适配器端官方用到的6.x以上的,原来我老写入的5.6版本,导致一直报es fail adpter
2.2 下面配置客户端的代码中
canal.conf:
canalServerHost: 127.0.0.1:11111
batchSize: 500
syncBatchSize: 1000
retries: 0
timeout:
mode: tcp
srcDataSources:
defaultDS:
url: jdbc:mysql://127.0.0.1:3306/mytest?useUnicode=true
username: root
password: 121212
canalAdapters:
- instance: example
groups:
- groupId: g1
outerAdapters:
- name: es
hosts: 127.0.0.1:9300 # es 集群地址, 逗号分隔
properties:
cluster.name: elasticsearch # es cluster name
hosts用到的127.0.0.1:9300,我自作主张将他改为127.0.0.1:9200,tcp方式用的是9300,http才用9200。
2.3 如果出错,需要多多查看日志信息看看为什么出错,再百度。/tmp/canal-adapter/logs/adapter,运行日志的地方。
结束语
计算机真的很奇妙,表面上看着很简单,流程跟着做都出现一大堆bug。
我的适配器目录:/tmp/canal-adapter
server目录:/tmp/canal
本地的es目录:usr/local/Cellar/elasticsearch/elasticsearch-6.5.4/