DebeziumConnectorforMySQL缺少数据库历史记录主题

isr3a4wc  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(1098)

我使用debezium连接器从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

我已经阅读了官方页面在这里指出的解决方案:
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 不会被使用(如官方文档解释)那么我已经解决了保留大小和保留时间的问题。
有人知道我为什么会犯这个错误吗?
编辑:im使用版本0.8。
这是一个最后的大学工作的一部分,那么,我想我不能分享完整的docker撰写文件(对不起)之前,我发表在我的大学,但我可以告诉你有关这个问题的重要事项。我不认为这是一个配置问题,因为我没有什么特别的在我的码头撰写。

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:

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

zte4gxcn

zte4gxcn1#

最后,在与这个问题斗争了很多天之后,我找到了问题的原因和解决方法。
debezium/zookeeper图像的文档中有一个勘误表。正如您在这个链接中看到的:
链接到dockerhub中的debezium/zookeeper图像
文档建立了3个卷来保存zookeeper需要的所有数据。此卷的路径设置为:
/Zookeeper/数据
/Zookeeper/日志
/Zookeeper/配置
这里的问题是第二个是错误的。根据dockerfile,用于保存事务日志的第二个dockerfile的路径必须是:
/Zookeeper/txns
我将在下一张图片中显示其dockerfile的快照。

mwngjboj

mwngjboj2#

我遇到了一个类似的问题,mysql.properties配置文件中的database.server.id和database.server.name需要是唯一的

相关问题