canal搭建及其常见错误

心得

闲来无事看到阿里巴巴的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/

你可能感兴趣的:(elasticsearch,elasticsearch,canal)