温馨提示×

debian kafka怎样设副本

小樊
43
2026-10-09 19:14:38
栏目: 智能运维

在 Debian 上部署的 Kafka 中,“设副本”通常分为 创建 Topic 时指定副本数 和 修改已有 Topic 的副本数 两种情况。下面分别说明。


一、创建 Topic 时设置副本数

假设:

  • Kafka 安装在 /opt/kafka
  • Zookeeper 正常
  • 有 3 个 broker(副本数不能超过 broker 数量)
/opt/kafka/bin/kafka-topics.sh \
  --create \
  --zookeeper localhost:2181 \
  --replication-factor 3 \
  --partitions 3 \
  --topic test-topic

说明:

  • --replication-factor 3:副本数
  • --partitions 3:分区数
  • 副本数 ≤ broker 数量

二、查看 Topic 副本情况

/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

三、修改已有 Topic 的副本数(重点)

Kafka 不支持直接通过一条命令修改副本数,需要使用 reassignment 方式。

1. 生成副本调整计划

假设要把 test-topic 的副本从 1 改成 3

当前情况(假设)

  • broker 列表:1,2,3

创建 JSON 文件 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]
    }
  ]
}

2. 执行副本重新分配

/opt/kafka/bin/kafka-reassign-partitions.sh \
  --zookeeper localhost:2181 \
  --reassignment-json-file increase-replication.json \
  --execute

3. 查看执行进度

/opt/kafka/bin/kafka-reassign-partitions.sh \
  --zookeeper localhost:2181 \
  --reassignment-json-file increase-replication.json \
  --verify

四、修改默认副本数(新建 Topic 生效)

编辑 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

五、常见注意事项

  1. 副本数不能超过 broker 数量
  2. 生产环境建议:
    • 副本数 ≥ 3
    • min.insync.replicas=2
  3. 修改副本会有数据拷贝,注意磁盘和网络压力

如果你愿意,可以告诉我:

  • Kafka 版本(如 2.x / 3.x)
  • 是否使用 KRaft(无 Zookeeper)
  • 当前 broker 数量

我可以给你一份完全适配你环境的副本配置方案。

0 踩