docker部署canal并简单同步数据到mq

2020.11.23 11:11 206
阅读约 6 分钟

canal部署

Mysql相关设定 

对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下

[mysqld] log-bin=mysql-bin # 开启 
binlog binlog-format=ROW # 选择 ROW 模式 
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复 

创建canal账号 

CREATE USER canal IDENTIFIED BY 'canal'; 
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
FLUSH PRIVILEGES;

docker-compose部署canal 

拉取镜像 

1.1.5版本后支持rabbitmq,所以我直接拉取最新镜像

docker pull canal/canal-server:latest 

 复制出配置文件

docker cp cranky_kare:/home/admin/canal-server/conf/canal.properties ./ 
docker cp cranky_kare:/home/admin/canal-server/conf/example/instance.properties ./ 

修改instace.properties的这几处位置

下面还有topic也需要修改一下 

# mq 
config canal.mq.topic=dbMessage 

以及canal.properties的几个位置 

canal.serverMode = rabbitmq 
## 使用rabbitmq接收binlog数据 
canal.mq.servers = 106.54.247.224 
canal.mq.vhost=/ 
canal.mq.exchange=core-business 
canal.mq.username=admin 
canal.mq.password=admin 

基于已有docker,docker-compose环境,可以使用docker-compose文件进行部署 

docker-compose.yml文件如下: 

version: "3"

services:
  canal: 
    image: canal/canal-server:latest
    ports: 
      - 11111:11111
    volumes: 
      - ./conf/canal.properties:/home/admin/canal-server/conf/canal.properties
      - ./conf/instance.properties:/home/admin/canal-server/conf/example/instance.properties
      - ./logs/:/home/admin/canal-server/logs/
    restart: always

修改完后再 

sh bin/startup.sh

binlog日志推送到mq需要创建相应的exchange和queue,示例如下 创建exchange

 绑定队列 

当我们对数据库进行插入新增删除操作时,会自动通过canal 收集binlog将数据发送到mq中,接下来我们需要实现es数据的增量同步

字数:1459 发布于 7 个月前
Copyright 2018-2021 Siques