参考:https://blog.csdn.net/yehongzhi1994/article/details/107880162

一、配置 MySQL

版本:8.0.25

1、修改 my.cnf

  1. cd /usr/local/docker/mysql8/conf
  2. vi my.cnf

my.cnf

  1. [mysqld]
  2. # 打开binlog
  3. log-bin=mysql-bin
  4. # 选择ROW(行)模式
  5. binlog-format=ROW
  6. # 配置MySQL replaction需要定义,不要和canal的slaveId重复
  7. server_id=1
  1. # 返回到 mysql8 目录
  2. cd ..
  3. # 停止并删除 mysql8 镜像
  4. docker-compose down
  5. # 重新启动
  6. docker-compose up -d

2、创建 Canal 账户

  1. # 进入容器
  2. docker exec -it mysql8 /bin/bash
  3. # 登录 root 用户
  4. mysql -uroot -p
  5. # 输入密码
  6. 123456
  7. # 创建 Canal 账户
  8. create user 'canal'@'%' identified by 'Canal@123456';

3、为 Canal 账户赋予权限

  1. # 赋予权限
  2. grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'canal'@'%';
  3. # 刷新权限,使操作生效。
  4. FLUSH PRIVILEGES;

4、检查配置

改了配置文件之后,重启MySQL,使用命令查看是否打开binlog模式:

  1. # 使用命令查看是否打开 binlog 模式
  2. SHOW VARIABLES LIKE 'log_bin';
  3. # 查看 binlog 日志文件列表
  4. SHOW BINARY LOGS;
  5. # 查看当前正在写入的 binlog 文件
  6. SHOW MASTER STATUS;

image.png

image.png

image.png

二、安装 Kafka

安装 Kafka 的时候,需要同时安装 Zookeeper

Kafka 相当于是一个生产者,它生产出来的消息需要消费者来消费掉,消费者不可能每次都来请求生产者是否可以消费,所以它们需要一个注册中心,通过注册中心,消费者就可以清楚的知道是否有消息可以被消费,而 Kafka 内部设计中使用了 Zookeeper 作为注册中心,所以 Kafka 需要 Zookeeper。

1、创建 Kafka 目录

  1. cd /usr/local/docker
  2. mkdir kafka
  3. cd kafka
  4. mkdir -p {zookeeper-data,logs}

2、创建 docker-compose.yml

  1. vi docker-compose.yml

docker-compose.yml

  1. version: '3.1'
  2. services:
  3. zookeeper:
  4. image: wurstmeister/zookeeper
  5. container_name: zookeeper
  6. restart: always
  7. volumes:
  8. - ./zookeeper-data:/data
  9. ports:
  10. - 2181:2181
  11. kafka:
  12. image: wurstmeister/kafka:2.13-2.6.0
  13. container_name: kafka
  14. ports:
  15. - 9092:9092
  16. environment:
  17. KAFKA_ADVERTISED_HOST_NAME: kafka
  18. KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
  19. restart: always
  20. volumes:
  21. - ./logs:/kafka
  22. - ./docker.sock:/var/run/docker.sock
  23. # 暂时没发现什么用处,注释掉。
  24. # kafka-manager:
  25. # image: sheepkiller/kafka-manager
  26. # restart: always
  27. # ports:
  28. # - 9000:9000
  29. # environment:
  30. # ZK_HOSTS: zookeeper:2181

3、启动 docker-compose

  1. docker-compose up -d

4、测试发送/接收消息

  1. # 进入到 Kafka 容器中
  2. docker exec -it kafka /bin/bash
  3. # 创建一个名称为 test 的 topic
  4. kafka-topics.sh --create --topic test --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1
  5. # 查看刚刚创建的 topic 信息
  6. kafka-topics.sh --zookeeper zookeeper:2181 --describe --topic test
  7. # 打开生产者发送若干条消息,Ctrl + C 退出发送模式。
  8. kafka-console-producer.sh --topic=test --broker-list kafka:9092
  9. # 消费者接收消息
  10. kafka-console-consumer.sh --bootstrap-server kafka:9092 --from-beginning --topic test

三、安装 Canal

1、创建 Canal 目录

  1. cd /usr/local/docker
  2. mkdir canal-server
  3. cd canal-server
  4. mkdir -p {conf,logs}

2、创建 docker-compose.yml

  1. vi docker-compose.yml

docker-compose.yml

  1. version: '3.1'
  2. services:
  3. canal-server:
  4. image: canal/canal-server:v1.1.5
  5. container_name: canal-server
  6. ports:
  7. - 11111:11111
  8. environment:
  9. - canal.destinations=test
  10. - canal.instance.master.address=192.168.3.60:3306
  11. - canal.instance.dbUsername=canal
  12. - canal.instance.dbPassword=canal
  13. - canal.instance.filter.regex=vccx.t_cust,vmc.*
  14. volumes:
  15. - ./conf/:/home/admin/canal-server/conf/
  16. - ./logs/:/home/admin/canal-server/logs/

3、启动 docker-compose

  1. docker-compose up -d

四、安装 Canal-Admin

1、创建 Canal-Admin 目录

  1. cd /usr/local/docker
  2. mkdir canal-admin
  3. cd canal-admin
  4. mkdir logs

2、创建 docker-compose.yml

  1. vi docker-compose.yml

docker-compose.yml

  1. version: '3.1'
  2. services:
  3. canal-admin:
  4. image: canal/canal-admin:v1.1.5
  5. container_name: canal-admin
  6. ports:
  7. - 8089:8089
  8. environment:
  9. - server.port=8089
  10. - canal.adminUser=admin
  11. - canal.adminPasswd=admin
  12. volumes:
  13. - ./logs/:/home/admin/canal-admin/logs

3、测试

访问 Web 界面
地址:192.168.3.60:8089
账号:admin
密码:123456
image.png