参考:https://blog.csdn.net/yehongzhi1994/article/details/107880162
一、配置 MySQL
版本:8.0.25
1、修改 my.cnf
cd /usr/local/docker/mysql8/confvi my.cnf
my.cnf
[mysqld]# 打开binloglog-bin=mysql-bin# 选择ROW(行)模式binlog-format=ROW# 配置MySQL replaction需要定义,不要和canal的slaveId重复server_id=1
# 返回到 mysql8 目录cd ..# 停止并删除 mysql8 镜像docker-compose down# 重新启动docker-compose up -d
2、创建 Canal 账户
# 进入容器docker exec -it mysql8 /bin/bash# 登录 root 用户mysql -uroot -p# 输入密码123456# 创建 Canal 账户create user 'canal'@'%' identified by 'Canal@123456';
3、为 Canal 账户赋予权限
# 赋予权限grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'canal'@'%';# 刷新权限,使操作生效。FLUSH PRIVILEGES;
4、检查配置
改了配置文件之后,重启MySQL,使用命令查看是否打开binlog模式:
# 使用命令查看是否打开 binlog 模式SHOW VARIABLES LIKE 'log_bin';# 查看 binlog 日志文件列表SHOW BINARY LOGS;# 查看当前正在写入的 binlog 文件SHOW MASTER STATUS;



二、安装 Kafka
安装 Kafka 的时候,需要同时安装 Zookeeper
Kafka 相当于是一个生产者,它生产出来的消息需要消费者来消费掉,消费者不可能每次都来请求生产者是否可以消费,所以它们需要一个注册中心,通过注册中心,消费者就可以清楚的知道是否有消息可以被消费,而 Kafka 内部设计中使用了 Zookeeper 作为注册中心,所以 Kafka 需要 Zookeeper。
1、创建 Kafka 目录
cd /usr/local/dockermkdir kafkacd kafkamkdir -p {zookeeper-data,logs}
2、创建 docker-compose.yml
vi docker-compose.yml
docker-compose.yml
version: '3.1'services:zookeeper:image: wurstmeister/zookeepercontainer_name: zookeeperrestart: alwaysvolumes:- ./zookeeper-data:/dataports:- 2181:2181kafka:image: wurstmeister/kafka:2.13-2.6.0container_name: kafkaports:- 9092:9092environment:KAFKA_ADVERTISED_HOST_NAME: kafkaKAFKA_ZOOKEEPER_CONNECT: zookeeper:2181restart: alwaysvolumes:- ./logs:/kafka- ./docker.sock:/var/run/docker.sock# 暂时没发现什么用处,注释掉。# kafka-manager:# image: sheepkiller/kafka-manager# restart: always# ports:# - 9000:9000# environment:# ZK_HOSTS: zookeeper:2181
3、启动 docker-compose
docker-compose up -d
4、测试发送/接收消息
# 进入到 Kafka 容器中docker exec -it kafka /bin/bash# 创建一个名称为 test 的 topickafka-topics.sh --create --topic test --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1# 查看刚刚创建的 topic 信息kafka-topics.sh --zookeeper zookeeper:2181 --describe --topic test# 打开生产者发送若干条消息,Ctrl + C 退出发送模式。kafka-console-producer.sh --topic=test --broker-list kafka:9092# 消费者接收消息kafka-console-consumer.sh --bootstrap-server kafka:9092 --from-beginning --topic test
三、安装 Canal
1、创建 Canal 目录
cd /usr/local/dockermkdir canal-servercd canal-servermkdir -p {conf,logs}
2、创建 docker-compose.yml
vi docker-compose.yml
docker-compose.yml
version: '3.1'services:canal-server:image: canal/canal-server:v1.1.5container_name: canal-serverports:- 11111:11111environment:- canal.destinations=test- canal.instance.master.address=192.168.3.60:3306- canal.instance.dbUsername=canal- canal.instance.dbPassword=canal- canal.instance.filter.regex=vccx.t_cust,vmc.*volumes:- ./conf/:/home/admin/canal-server/conf/- ./logs/:/home/admin/canal-server/logs/
3、启动 docker-compose
docker-compose up -d
四、安装 Canal-Admin
1、创建 Canal-Admin 目录
cd /usr/local/dockermkdir canal-admincd canal-adminmkdir logs
2、创建 docker-compose.yml
vi docker-compose.yml
docker-compose.yml
version: '3.1'services:canal-admin:image: canal/canal-admin:v1.1.5container_name: canal-adminports:- 8089:8089environment:- server.port=8089- canal.adminUser=admin- canal.adminPasswd=adminvolumes:- ./logs/:/home/admin/canal-admin/logs
3、测试
访问 Web 界面
地址:192.168.3.60:8089
账号:admin
密码:123456
