首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于MySQL的Debezium连接器。缺少db历史记录主题。

问用于MySQL的Debezium连接器。缺少db历史记录主题。
EN

Stack Overflow用户
提问于 2019-01-22 10:06:19
回答 4查看 7.6K关注 0票数 3

我使用Debezium连接器版本0.8来捕获MySQL数据库中的更改,并将其移到Kafka。我使用了一个用于MySQL的容器,另一个用于连接器,另一个用于Kafka。

当我停止Docker (docker-compose down)并再次启动Docker时,通常会出现以下错误:

代码语言:javascript
复制
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/

但是我遵循了这些步骤,我认为我的配置是可以的:

代码语言:javascript
复制
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没有什么特别之处。

代码语言:javascript
复制
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:

其他部分只是网络或无关的东西。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-04-10 10:30:08

最后,在与这个问题斗争了很多天之后,我找到了问题的原因和解决办法。

debezium/zookeeper映像的文档中有一个勘误表。正如您在此链接中所看到的:

链接到dockerHub中的debezium/动物园管理员映像

该文档建立了3个卷,以保存所有数据动物园管理员的需要。这些卷的途径是:

  1. /zookeeper/data
  2. /zookeeper/logs
  3. /zookeeper/conf

这里的问题是第二个问题是错的。根据它的Dockerfile,用于保存事务日志的第二个路径必须是:

/zookeeper/txns

这里是它的Dockerfile的一个片段。

代码语言:javascript
复制
# 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"]
票数 1
EN

Stack Overflow用户

发布于 2019-12-26 11:11:21

我也面临着一个类似的问题。您的database.server.id和database.server.name在mysql.properties配置文件中需要是唯一的。

票数 3
EN

Stack Overflow用户

发布于 2021-04-19 07:45:25

不要让历史主题过期或删除历史主题。这就是问题的原因。

为了避免主题到期,请在这里运行以下Kafka文档:https://debezium.io/blog/2018/03/16/note-on-database-history-topic-configuration/

代码语言:javascript
复制
<KAFKA_DIR>/bin/kafka-configs.sh --zookeeper zookeeper:2181 --entity-type topics --entity-name <DB_HISTORY_TOPIC> --alter --add-config retention.bytes=-1

若要在开发环境中从此问题中恢复,只需删除原始连接器并重新创建具有不同名称的新连接器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54305763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档