Canal v1.1.4版本搭建HA集群
-
MySQL 架构一主两从
-
主机 192.168.1.40 MySQL-master canal-admin canal-server
-
主机 192.168.1.41 MySQL-slave1 canal-admin canal-server
-
主机 192.168.1.42 MySQL-slave2 nginx
1、部署 jdk 步骤省略,自行安装
192.168.1.40 192.168.1.41 192.168.1.42 部署好了MySQL8.x,部署省略
在 192.168.1.40 登入MySQL 创建用户,以及授权权限。
CREATE USER 'canal'@'192.168.%.%' IDENTIFIED WITH mysql_native_password BY 'Canal..123654';
GRANT ALL PRIVILEGES ON canal_manager.* TO 'canal'@'192.168.%.%';
192.168.1.40 主机操作
部署配置canal-admin
mkdir /usr/local/admin cd /usr/local/src wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz tar xf canal.admin-1.1.4.tar.gz -C ../admin/ cd ../admin/ vim conf/application.yml server: port: 8089 spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 spring.datasource: address: 192.168.1.40:3308 #修改数据库地址 database: canal_manager #数据库默认即可 username: canal #数据库账号 password: Canal..123654 #数据库密码 driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://${spring.datasource.address}/${spring.datasource.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false hikari: maximum-pool-size: 30 minimum-idle: 1 canal: adminUser: admin adminPasswd: admin
初始化数据库
登录数据库把/usr/local/admin/conf/canal_manager.sql 这个SQL文件导入
source /usr/local/admin/conf/canal_manager.sql
启动服务
bash bin/startup.sh
注意: 因为用的MySQL8.x,canal-admin默认解压出来的驱动是MySQL5.x,所以启动时候会报错,解决办法就是去MySQL官网下载对应版本的驱动替换进去。
192.168.1.41 主机操作
把 192.168.1.40 的 admin 打包,拷贝过来,直接启动
部署 nginx
192.168.1.42 主机操作
yum install nginx
cat /etc/nginx/conf.d/canal.conf upstream canal_backend { server 192.168.1.40:8089; server 192.168.1.41:8089; } server { listen 80; server_name localhost; location / { proxy_next_upstream error timeout http_503 http_504 http_502; #如果请求当前节点触发了这里指定的条件就将请求转发到下一个机器 proxy_connect_timeout 500s; proxy_read_timeout 500s; proxy_send_timeout 500s; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://canal_backend; } }
systemctl start nginx && systemctl enable nginx
访问 nginx
192.168.1.42
账号 admin 密码 123456
登录canal-admin,新建集群,定义集群名称,zk集群地址
添加报错
explicit_defaults_for_timestamp 改成0就好了
(root@localhost) [(none)]> set explicit_defaults_for_timestamp=OFF;
(root@localhost) [(none)]> show variables like "%timestamp%";
重启两台 canal-admin 的服务。
部署配置canal-server
mkdir /usr/local/deployer cd /usr/local/src/ wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz tar xf canal.deployer-1.1.4.tar.gz -C ../deployer
修改配置文件
使用 canal_local.properties 的配置文件覆盖 canal.properties,并编辑 canal.properties
启动canal服务
bash bin/startup.sh local
验证canal-server服务是否正常
登录canal-admin,在Server管理页面查看状态是否正常,如果不正常,可以在线查看日志
tailf logs/canal/canal.log
第二台canal服务的部署流程和上面一样,只是修改配置文件的时候注意下,canal.register.ip改成本机IP,canal.admin.register.cluster,其他都一样。然后启动服务。
-
-
@Alex 感谢楼主的分享,期待更多canal好文