问题现象
在只有一个副本时,出现了broker节点丢失,因此导致了leader -1的情况
解决方案
直接修改zookeeper中该分区对应的state
set /brokers/topics/test_add_replication/partitions/1/state {"controller_epoch":140,"leader":1002,"version":1,"leader_epoch":12,"isr":[1002]}
稍等片刻,重新查看topic状态,即可发现leader已变更为1002
题外话
查看toipic状态命令
./kafka-topics.sh --describe --zookeeper localhost:2181 --topic test_add_rep
lication
查看kafka集群brokers命令
zookeeper/bin/zkCli.sh
ls /brokers/ids
修改topic的副本数量
PS:非常不建议只有1个副本
- 创建一个json文件,内容如下:
{
"version": 1,
"partitions": [
{
"topic": "test_add_replication",
"partition": 0,
"replicas": [
1002,
1004,
1001
]
},
{
"topic": "test_add_replication",
"partition": 1,
"replicas": [
1002,
1004,
1001
]
},
{
"topic": "test_add_replication",
"partition": 2,
"replicas": [
1002,
1004,
1001
]
},
{
"topic": "test_add_replication",
"partition": 3,
"replicas": [
1002,
1004,
1001
]
},
{
"topic": "test_add_replication",
"partition": 4,
"replicas": [
1002,
1004,
1001
]
}
]
}
- 执行修改命令
./kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-jso
n-file /tmp/rep.json --execute
修改完成后稍等片刻即可生效