我使用Debezium连接器版本0.8来捕获MySQL数据库中的更改,并将其移到Kafka。我使用了一个用于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我在这里的官方网页上读到了这一问题的解决办法:
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请注意,如果我将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:其他部分只是网络或无关的东西。
发布于 2019-04-10 10:30:08
最后,在与这个问题斗争了很多天之后,我找到了问题的原因和解决办法。
debezium/zookeeper映像的文档中有一个勘误表。正如您在此链接中所看到的:
链接到dockerHub中的debezium/动物园管理员映像
该文档建立了3个卷,以保存所有数据动物园管理员的需要。这些卷的途径是:
/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"]发布于 2019-12-26 11:11:21
我也面临着一个类似的问题。您的database.server.id和database.server.name在mysql.properties配置文件中需要是唯一的。
发布于 2021-04-19 07:45:25
不要让历史主题过期或删除历史主题。这就是问题的原因。
为了避免主题到期,请在这里运行以下Kafka文档:https://debezium.io/blog/2018/03/16/note-on-database-history-topic-configuration/
<KAFKA_DIR>/bin/kafka-configs.sh --zookeeper zookeeper:2181 --entity-type topics --entity-name <DB_HISTORY_TOPIC> --alter --add-config retention.bytes=-1若要在开发环境中从此问题中恢复,只需删除原始连接器并重新创建具有不同名称的新连接器。
https://stackoverflow.com/questions/54305763
复制相似问题