参考 https://www.51cto.com/article/626708.html
安装Mysql 8
1 | docker pull mysql/mysql-server:latest |
Canal-Server
通过docker镜像的方式启动Cannal-Server还有点问题,下边通过下载 canal-canal.deployer-1.1.7-SNAPSHOT.tar.gz ,然后通过命令行的方式启动
下载 canal.deployer
canal-canal.deployer-1.1.7-SNAPSHOT.tar.gz
wget https://d7.serctl.com/downloads8/2022-10-13-16-00-30-canal-canal.deployer-1.1.7-SNAPSHOT.tar.gz
解压 canal.deployer
1 | mv 2022-10-13-16-00-30-canal-canal.deployer-1.1.7-SNAPSHOT.tar.gz canal-canal.deployer-1.1.7-SNAPSHOT.tar.gz |
修改配置文件
创建 conf/prod目录,并将 conf/example/instance.properties 复制到 conf/prod 目录下, 并修复 conf/prod/instance.properties
1 | canal.instance.master.address=bigdata.example.com:3306 |
启动canal.deployer
bin/startup.sh
Canal Adapte
下载canal.adapter
canal-canal.adapter-1.1.7-SNAPSHOT.tar.gz
修改配置文件
配置文件application.yml
1 | srcDataSources: |
修改配置文件 rdb/dashboard_api_log.yml
在rdb目录下创建一个dashboard_api_log.yml文件
配置如下:
1 | dataSourceKey: defaultDS |
启动canal adapter
bin/startup.sh
这样就可以将mysql中的数据,同步到另外一个mysql表中了。
客户端报错
1 Reason: Unable toset value forproperty src-data-sources
可能是mysql connector jar的版本太低了
由于Mysql 是8.0 这里需要下载 mysql-connector-java-8.0.20.jar,并将其放入lib中
1 | cp mysql-connector-java-8.0.20.jar canal-adapter/lib/ |
2 com.alibaba.otter.canal.protocol.exception.CanalClientException: failed to subscribe with reason: something goes wrong with channel:[id: 0x46f25d90, /127.0.0.1:26056 => /127.0.0..
1:11111], exception=com.alibaba.otter.canal.server.exception.CanalServerException: destination:example should start first
因为需要在 canal.adapter 中的application.yml 和 conf/rdbdashboard_api_log.yml 配置文件中指定 destination 指定为 canal.deployer 中对应的conf 目录下的文件夹名,比如这里是prod。