Kafka报错:Controller 219 epoch 110 failed to change state for partition

集群里面kafka报错:

Controller 219 epoch 110 failed to change state for partition maxwell_atlas-0 from OfflinePartition to OnlinePartition

kafka.common.stateChangeFailedException: Failed to elect leader for partition maxwell_atlas-0 under strategy OfflinePartitionLeaderElectionStrategy

错误原因:

新增加的副本的offset比leader的新,所以在elecct的时候,报错。

解决办法:

kafka自带平衡topic的脚本,只需要启动一遍即可。来到kafka的bin目录下执行命令:

kafka-preferred-replica-election.sh --bootstrap-server ip:2181

然后重启kafka。

然而实际,重启好了不到5分钟,整个集群依然报警了。

再看日志文件,多了些其他报错

[Controller id=219] Partition __consumer_offsets-8 failed to complete preferred replica leader election to 139. Leader is still 141

而在仔细检查所有kafka的实例,发现现有的Kafka.BrokerId有:140,141,142,143,219,而选举leader的id却是139。都可以盲猜一手,现在的219就是之前的139。

从这儿也可以推断出:

  1. 现有的5个节点的partition都不是最新的,所以有主控制器Offline,因为选不出leader

  1. 具体选不出leader的原因,应该就是原来有brokerid=139的,现在没了,而replic partitions,isr里还是原来的139,所以现在的140,141,142,143,219里选举不出139的为leader。

解决办法:

将219所在brokerid改为139后,重启kafka。

重启产生新的报错:

Fatal error during KafkaServer startup. Prepare to shutdown.

Configured broker.id 139 doesn't match stored broke.id 219 in meta.properties.If you moved your data, make sure your configured broker.id matches.

问题原因:

启动kafka时,配置文件中的broke.id和元数据里保存的broker.id不一致导致的启动失败。

解决办法:

前去kafka的数据目录下找到meta.properties文件,修改broker.id=219为139,然后重启。再按上面那个报错处理topic。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值