在 Debian 上部署的 Kafka 中,“设副本”通常分为 创建 Topic 时指定副本数 和 修改已有 Topic 的副本数 两种情况。下面分别说明。
假设:
/opt/kafka/opt/kafka/bin/kafka-topics.sh \
--create \
--zookeeper localhost:2181 \
--replication-factor 3 \
--partitions 3 \
--topic test-topic
说明:
--replication-factor 3:副本数--partitions 3:分区数/opt/kafka/bin/kafka-topics.sh \
--describe \
--zookeeper localhost:2181 \
--topic test-topic
输出示例:
Topic: test-topic Partition: 0 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3
Kafka 不支持直接通过一条命令修改副本数,需要使用 reassignment 方式。
假设要把 test-topic 的副本从 1 改成 3
increase-replication.json{
"version": 1,
"partitions": [
{
"topic": "test-topic",
"partition": 0,
"replicas": [1,2,3]
},
{
"topic": "test-topic",
"partition": 1,
"replicas": [2,3,1]
},
{
"topic": "test-topic",
"partition": 2,
"replicas": [3,1,2]
}
]
}
/opt/kafka/bin/kafka-reassign-partitions.sh \
--zookeeper localhost:2181 \
--reassignment-json-file increase-replication.json \
--execute
/opt/kafka/bin/kafka-reassign-partitions.sh \
--zookeeper localhost:2181 \
--reassignment-json-file increase-replication.json \
--verify
编辑 server.properties:
default.replication.factor=3
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
min.insync.replicas=2
然后重启 Kafka:
systemctl restart kafka
min.insync.replicas=2如果你愿意,可以告诉我:
我可以给你一份完全适配你环境的副本配置方案。