Canal部署
一、 部署canal-server
下载canal-server :https://github.com/alibaba/canal/releases
这里我选择最新版的1.1.5 alpha版本,据说这个版本支持es7.x ,文件名:canal.deployer-1.1.5-SNAPSHOT.tar.gz
上传到服务器上并解压至 /opt/apps/canal/server 文件夹下
参照教程配置server https://github.com/alibaba/canal/wiki/QuickStart
集群部署server需要配置zookeeper
# 修改配置文件 {canal_base}/conf/canal.properties
canal.zkServers=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
二、部署canal-adapter
参考教程:https://github.com/alibaba/canal/wiki/Sync-ES
根据github上的教程配置信息搭建完毕此处记录几项注意点:
1.canal全量同步数据:curl -X POST http://192.168.6.231:8081/etl/es7/mytest_user.yml
2./conf/es7/xx.yml注意只留一个
3.同步sql的大小写要与es索引大小写一致
4.es的索引需要预先建立
5.同步脚本映射关系中要包含 id as _id 不然初始化时不会同步数据
6.一个cpu的服务器一定要修改 canal.instance.parser.parallel为false
7.手动同步数据或出异常后可能会切换同步状态
查看同步状态
curl http://127.0.0.1:8081/syncSwitch/example
修改同步状态
curl http://127.0.0.1:8081/syncSwitch/example/off -X PUT
-------------------------------------------------2021年4月25日-----------------------------------------------
canal1.5稳定版发布了
进行了一下升级,因为在前端时间使用时发现rocketmq时不时的service buzy,还是切回tcp模式了。
1.5版本tcp模式有以下问题:
1.server重启client无法自动重连
2.client配置zookeeperHosts无法启动
问题1:在
com.alibaba.otter.canal.client.impl.SimpleCanalConnector类中的writeWithHeader方法中添加异常捕获,增加重连
try {
channel.write(writeHeader);
channel.write(ByteBuffer.wrap(body));
}catch (IOException e){
this.doConnect();
logger.error(e.getMessage(),e);
}
问题2:
更新curator-recipes版本
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
</dependency>