如何为MySQL数据库创建多个Debezium连接器并解决启动报错
Debezium多连接器部署报错解决方法
报错核心原因
你启动第二个connect容器时的端口映射配置错误:debezium/connect镜像默认内部服务端口为8083,你错误将宿主机8084端口映射到了容器的8084端口,容器内没有服务监听8084端口,导致容器启动后立刻退出,触发context canceled报错。
具体修复方案
- 先清理已创建的异常容器
先停止删除之前启动失败的connect、connect1容器,避免名称、端口占用冲突:
- 先清理已创建的异常容器
sudo docker stop connect connect1 sudo docker rm connect connect1
- 修正connect容器的启动参数
两点核心调整:
- 端口映射规则为「宿主机端口:容器内部服务端口」,容器内部固定用默认的8083端口,无需修改
- 后台运行无需加
-it &,直接用-d参数即可,避免交互模式后台运行无终端导致进程异常退出
- 修正connect容器的启动参数
修正后的完整启动命令如下:
# 启动zookeeper sudo docker run -d --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:1.5 # 启动kafka,等待zookeeper完全启动后再执行(建议间隔10秒) sudo docker run -d --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka:1.5 # 启动第一个connect节点,等待kafka完全启动后再执行(建议间隔15秒) sudo docker run -d --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs -e OFFSET_STORAGE_TOPIC=my_connect_offsets -e STATUS_STORAGE_TOPIC=my_connect_statuses --link zookeeper:zookeeper --link kafka:kafka debezium/connect:1.5 # 启动第二个connect节点,端口映射修改为8084:8083 sudo docker run -d --name connect1 -p 8084:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs -e OFFSET_STORAGE_TOPIC=my_connect_offsets -e STATUS_STORAGE_TOPIC=my_connect_statuses --link zookeeper:zookeeper --link kafka:kafka debezium/connect:1.5
- 验证集群状态
两个connect节点启动完成后,访问任意节点的接口即可看到集群运行状态:
- 验证集群状态
# 查看当前集群已部署的连接器列表 curl http://localhost:8083/connectors # 第二个节点接口访问效果完全一致 curl http://localhost:8084/connectors
多MySQL连接器配置说明
两个connect节点属于同一个Kafka Connect集群,你只需要向任意一个节点的接口提交MySQL连接器配置即可,集群会自动分配任务到空闲节点运行,支持同时提交多个不同MySQL实例的连接器配置。
内容的提问来源于stack exchange,提问作者Steave Jones
相关产品推荐
相关产品推荐

