Dav*_*ora 5 apache-kafka apache-kafka-connect debezium
我正在使用 Debezium 连接器版本 0.8 捕获 MySQL 数据库中的更改并将其移动到 Kafka。我将 Docker 与一个用于 MySQL 的容器、另一个用于连接器的容器以及另一个用于 Kafka 的容器一起使用。
当我停止 Docker ( docker-compose down) 并再次启动 Docker 时,通常会收到以下错误:
org.apache.kafka.connect.errors.ConnectException: The db history topic is missing. You may attempt to recover it by reconfiguring the connector to SCHEMA_ONLY_RECOVERY
Run Code Online (Sandbox Code Playgroud)
我已经在官方页面上阅读了此问题的解决方案:
https://debezium.io/blog/2018/03/16/note-on-database-history-topic-configuration/
但我按照这些步骤操作,我认为我的配置没问题:
log.retention.bytes = -1
log.retention.hours = 168
log.retention.minutes = null
log.retention.ms = -1
Run Code Online (Sandbox Code Playgroud)
请注意,如果我设置log.retention.ms为-1,那么log.retention.minutes就log.retention.hours不会像官方文档解释的那样使用,然后我就解决了保留大小和保留时间问题。
那么,有人知道为什么我会收到此错误吗?
这是大学工作的一部分。docker-compose我想在我的大学发布之前我无法分享完整的文件,但我可以向您展示与这个问题相关的重要内容。我不认为这是一个配置问题,因为我的docker-compose.
mysql:
image: mysql/5.7:configured (Little changes like enabling queries...)
environment:
- MYSQL_ROOT_PASSWORD=debezium
- MYSQL_USER=mysqluser
- MYSQL_PASSWORD=mysqlpw
volumes:
- "sql_Data:/var/lib/mysql"
- "sql_LogError:/var/log/mysql"
kafka:
image: debezium/kafka:0.8
depends_on:
- zookeeper
environment:
- HOST_NAME=xxxx
- ADVERTISED_HOST_NAME=xxxx
- ZOOKEEPER_CONNECT=zookeeper:2181
- KAFKA_CREATE_TOPICS="events:1:1"
- KAFKA_LOG_RETENTION_MS=-1
volumes:
- "kafka_Data:/kafka/data"
- "kafka_Log:/kafka/logs"
- "kafka_Conf:/kafka/config"
connect:
image: debezium/connect:0.8
depends_on:
- zookeeper
- kafka
- mysql
environment:
- HOST_NAME=xxxx
- ADVERTISED_HOST_NAME=xxxx
- BOOTSTRAP_SERVERS=xxxx:9092
- GROUP_ID=1
- CONFIG_STORAGE_TOPIC=my_connect_configs
- OFFSET_STORAGE_TOPIC=my_connect_offsets
- STATUS_STORAGE_TOPIC=my_connect_statuses
volumes:
sql_Data:
sql_LogError:
kafka_Data:
kafka_Log:
kafka_Conf:
Run Code Online (Sandbox Code Playgroud)
而其他部分只是网络或不相关的东西。
最后,经过几天的努力,我找到了问题的原因和解决方案。
该图像的文档中有一个勘误表debezium/zookeeper。正如您在此链接中看到的:
链接到 dockerHub 中的 debezium/zookeeper 镜像
文档建立了3个卷来保存zookeeper需要的所有数据。这些卷的路径是:
/zookeeper/data/zookeeper/logs/zookeeper/conf这里的问题是第二个是错误的。根据其Dockerfile,第二个用于保存事务日志的路径必须是:
/zookeeper/txns
这是它的一个片段Dockerfile。
# Expose the ports and set up volumes for the data, transaction log, and configuration
EXPOSE 2181 2888 3888
VOLUME ["/zookeeper/data","/zookeeper/txns","/zookeeper/conf"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12380 次 |
| 最近记录: |