我有一个单节点群集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卷数据可用,是否可以恢复主题数据?
答案 0 :(得分:0)
不是。丢失zookeeper就像是您的inode表在文件系统上损坏了。您可能有一些方法可以在Zookeeper中手动重建数据,但这种方法极不可能起作用。这就是为什么人们将Zookeeper作为高度可用的分布式系统运行的原因,因为将存储在其中的数据保存在其中非常重要。