我有一个单节点集群Kafka设置。
docker compose文件如下所示:
version: '2'
services:
zookeeper:
image: zookeeper:3.4.9
hostname: zookeeper
ports:
- "2181:2181"
environment:
ZOO_MY_ID: 1
ZOO_PORT: 2181
ZOO_SERVERS: server.1=zookeeper:2888:3888
volumes:
- zookeeper-data:/var/lib/zookeeper/data
- zookeeper-log:/var/lib/zookeeper/log
broker:
image: confluentinc/cp-kafka:4.1.1
hostname: broker
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://dev.kafka.org:9092"
KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
KAFKA_BROKER_ID: 1
KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_DELETE_TOPIC_ENABLE: "true"
KAFKA_LOG_RETENTION_HOURS: 1680
KAFKA_JMX_PORT: 7071
volumes:
- kafka-data:/var/lib/kafka/data
depends_on:
- zookeeper
出于某种原因,我不得不重新启动整个Kafka堆栈。重新启动后,我发现主题丢失了。
似乎zookeeper数据日志的命名卷不正确。
如果zookeeper数据丢失且kafka卷数据可用,是否有方法恢复主题数据?
1条答案
按热度按时间62lalag41#
不是真的。丢失zookeeper有点像文件系统上的inode表已损坏。可能有一些方法可以在zookeeper中手动重建数据,但这种方法不太可能奏效。这就是为什么人们把zookeeper作为一个高可用的分布式系统来运行,因为保存存储在那里的数据是非常重要的。