在 Debian 上备份 Kafka,通常分为 元数据备份(ZooKeeper / KRaft)、Topic 配置备份 和 消息数据备份 三部分。下面按常见场景说明(以 Kafka 2.x/3.x 为例)。
如果是生产环境,建议在低峰期操作,或短暂停产:
常见路径:
/opt/kafka
/usr/local/kafka
/etc/kafka
/var/lib/kafka
tar czf kafka-config-$(date +%F).tar.gz \
/etc/kafka \
/opt/kafka/config
常见重要文件:
server.propertiesproducer.propertiesconsumer.propertieszookeeper.properties(如用 ZK)kraft/server.properties(KRaft 模式)kafka-topics.sh --bootstrap-server localhost:9092 \
--list > topics.txt
while read t; do
kafka-configs.sh --bootstrap-server localhost:9092 \
--entity-type topics --entity-name $t --describe
done < topics.txt > topic-configs.txt
zookeeper-shell.sh localhost:2181 <<EOF
ls /consumers
get /consumers
EOF
KRaft 模式可用:
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
Kafka 数据不能直接简单复制如果服务在运行,可能导致数据损坏。
systemctl stop kafka
备份数据目录:
tar czf kafka-data-$(date +%F).tar.gz /var/lib/kafka/logs
重启:
systemctl start kafka
使用 LVM / 快照:
lvcreate --size 10G --snapshot --name kafka-snap /dev/vg0/kafka
mount /dev/vg0/kafka-snap /mnt/snap
tar czf kafka-data.tar.gz /mnt/snap
umount /mnt/snap
lvremove /dev/vg0/kafka-snap
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic --from-beginning > backup.json
恢复:
kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic < backup.json
systemctl stop zookeeper
tar czf zk-data-$(date +%F).tar.gz /var/lib/zookeeper
systemctl start zookeeper
0 2 * * * /opt/backup/kafka-backup.sh
如果你能提供:
我可以给你定制备份脚本。