故障恢复
删除一台broker的数据看效果会怎么样?
- 机器运行的时候直接删除一个节点的数据,删除前先查看下集群的情况。
bin/kafka-broker-api-versions.sh --bootstrap-server master1:9092,master2:9092,node1:9092
- 执行删除数据和日志
rm -rf /datadrive/kafka/log/*
rm -rf /home/bigdata/module/kafka_2.12-3.6.0/logs
- 删除以后查询集群信息报错。
bin/kafka-broker-api-versions.sh --bootstrap-server master1:9092,master2:9092,node1:9092
报错如下:
node1:9092 (id: 2 rack: null) -> ERROR: org.apache.kafka.common.errors.DisconnectException
- 执行生产者命令。
bin/kafka-console-producer.sh --topic test2 --bootstrap-server master1:9092,master2:9092,node1:9092
报错如下:
[2023-11-01 13:43:52,855] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 16 : {test2=INVALID_REPLICATION_FACTOR} (org.apache.kafka.clients.NetworkClient)
- 其他的都不修改,重启集群,
kafka_cluster.sh是作者本人写的集群启停脚本,现在的状态就是node1数据和日志都删除以后,先关闭,然后重启。
./kafka_cluster.sh start
发现集群启动正常
bin/kafka-broker-api-versions.sh --bootstrap-server master1:9092,master2:9092,node1:9092
- 测试集群的可用性。
消费之前的数据。先重置消费者组的offset。
bin/kafka-consumer-groups.sh --bootstrap-server master1:9092,master2:9092,node1:9092 --group testgroup --reset-offsets --to-earliest --execute --topic test1
执行消费。发现可以消费到。
bin/kafka-console-consumer.sh --topic test1 --bootstrap-server master1:9092,master2:9092,node1:9092 --group testgroup --from-beginning
测试生产者。
bin/kafka-console-producer.sh --topic test1 --bootstrap-server master1:9092,master2:9092,node1:9092
一切正常,之前删除的数据在node1也全部复制出来了。