canal 踩坑实录---这可能是你看到的最全最简单的canal教程

超详细的Canal入门,看这篇就够了!
【Linux学习】解决Linux环境下执行脚本时报错:/bin/bash^M: 坏的解释器: 没有那个文件或目录

前排提示

canal1.1.5 比1.1.4 优化了很多 但是正式版还没发布 可以自己打包使用
对比

1.1.5 默认支持mysql8 mysql8 默认打开binlog 默认支持utf8

1.1.4 默认是mysql8以下 需要手动打开binlog日志 需要手动设置utf8

canal 在window下启动 问题很多 最后是在linux下测试

win下可能会遇到的问题 config not found 由于win下不知道为什么老是去同文件夹下class里找对应的rdb等文件夹 还是不要在win下测试了
如果要在win下测试的话 建议在idea直接启动程序

github下载比较慢 早上应该会好一下
canal下载地址
github 下载比较慢 可以自己下载打包 canal-adapter
canal-deployer 可以在这下载

canal-deployer

canal-deployer 1.1.4 跟1.1.5区别不大 可以使用同样的 主要是canal-adapter 有区别
可以下载 也可以下载代码打包生成

克隆代码

git clone https://gitee.com/mirrors/canal.git

下载完用idea打开 可以用maven插件 clean package打包
也可以用maven命令打包

mvn clean package -DskipTests

如果是打包上传的 解压后需要给启动关闭文件赋权限

打包完在 canal-deployer arget下的canal下 压缩成zip文件 上传到linux服务器 使用 unzip -x 文件名 进行解压
没有unzip命令的 使用 yum install unzip 进行安装 canal-adapter 也是一样

chmod u+x startup.sh stop.sh restart.sh

直接启动会报错/bin/bash^M: 坏的解释器: 没有那个文件或目录 报错原因
使用 sed -i \'s/\r$//\' startup.sh stop.sh restart.sh 命令修复 后面adapter 上传也是这样

修改 conf/example/instance.properties

vim conf/example/instance.properties # position info canal.instance.master.address=127.0.0.1:3306 连接的数据库地址 需要跟后面adapter srcDataSource一致 canal.instance.master.journal.name= canal.instance.master.position= canal.instance.master.timestamp= canal.instance.master.gtid= # rds oss binlog canal.instance.rds.accesskey= canal.instance.rds.secretkey= canal.instance.rds.instanceId= # table meta tsdb info canal.instance.tsdb.enable=true #canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb #canal.instance.tsdb.dbUsername=canal #canal.instance.tsdb.dbPassword=canal #canal.instance.standby.address = #canal.instance.standby.journal.name = #canal.instance.standby.position = #canal.instance.standby.timestamp = #canal.instance.standby.gtid= # username/password canal.instance.dbUsername=canal 连接的数据库用户名 需要跟后面adapter srcDataSource一致 canal.instance.dbPassword=canal 连接的数据库密码 canal.instance.connectionCharset = UTF-8 # enable druid Decrypt database password canal.instance.enableDruid=false

使用 startup.sh 启动canal-deployer

canal-adapter 1.1.5 使用

canal-adapter目前还没发正式版到了 v1.1.5-alpha-2 版 可以自己下载(下载比较慢) 也可以克隆后自己打包
将文件上传到linux服务器后 文件夹也是一样的 conf bin logs lib plugins

修改conf/application.yml 文件
默认srcDataSource是注释的 我们需要打开 配置的地址跟deployer一致 密码一致
下面的rdb是我们需要同步的方式 这里以 同步到mysql为例 key需要跟conf/rdb 里面的一致 可以设置不同库的相同表

vim conf/application.yml srcDataSources: defaultDS: url: jdbc:mysql://192.168.142.131:3306/demo_user?useUnicode=true username: root password: 123456 canalAdapters: - instance: example # canal instance Name or mq topic name groups: - groupId: g1 outerAdapters: - name: logger - name: rdb key: mysql1 properties: jdbc.driverClassName: com.mysql.jdbc.Driver jdbc.url: jdbc:mysql://127.0.0.1:3306/demo_user?useUnicode=true jdbc.username: root jdbc.password: 123456

配置同步文件yml 可以复制原来的进行修改

dataSourceKey: defaultDS destination: example groupId: outerAdapterKey: mysql1 concurrent: true dbMapping: database: demo_user 数据库 table: t_user 数据表 targetTable: demo_user.t_user1 需要同步的数据库数据表 targetPk: id: id # mapAll: true targetColumns: 同步的字段 id: wx_id: wx_nickname: roles: avatar_url: create_time: update_time: bonus: etlCondition: "where c_time>={}" commitBatch: 3000 # 批量提交的大小 ## Mirror schema synchronize config #dataSourceKey: defaultDS #destination: example #groupId: g1 #outerAdapterKey: mysql1 #concurrent: true #dbMapping: # mirrorDb: true # database: mytest canal 1.1.4 使用

canal-1.1.4 默认不支持 MySQL8

canal需要开启mysql的binlog mysql8 默认支持binlog 以下需要开启

docker 安装的mysql 开启binlog

进入容器内部

docker exec -it 容器id(容器名称) /bin/bash

登录mysql 查看是否开始binlog 查看编码格式

mysql -uroot -p 密码 # 查看编码 show variables like \'char%\'; # 查看是否开始binlog show variables like \'log_bin\';

编辑my.cnf 文件

vim /etc/mysql/my.cnf

没有vim命令的进行安装 在容器内安装vim

apt-get update apt-get install vim

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdydd.html