kafka 如何修改优先副本?
需要修改某个Topic中某分区的Leader
比如 topic1-0这个分区有3个副本[0,1,2], 按照「优先副本」的规则那么 0 号副本肯定就是Leader了 我们都知道分区中的只有Leader副本才会提供读写副本其他副本作为备份 假如在某些情况下,「0」 号副本性能资源不够,或者网络不太好,或者IO压力比较大那么肯定对Topic的整体读写性能有很大影响, 这个时候切换一台压力较小副本作为Leader就显得很重要;优先副本: 分区中的AR(所有副本)信息, 优先选择排在第一位的副本作为Leader Leader机制: 分区中只有一个Leader来承担读写,其他副本只是作为备份那么如何实现这样一个需求?
解决方案
将分区的 AR 中的第一个位置,替换成你指定副本就行了;AR = { 0,1,2 } ==> AR = {2,1,0}一般能够达到这个目的有以下两种方案
方案一:
分区副本重分配 (低成本方案)一般分区副本重分配主要有三个流程
生成推荐的迁移Json文件
执行迁移Json文件
验证迁移流程是否完成
这里我们主要看第2步骤, 来看看迁移文件一般是什么样子的
## 石臻臻的杂货铺
## 微信: szzdzhp001
sh bin/kafka-leader-election.sh --bootstrap-server xxxx:9090 --topic Topic1 --election-type PREFERRED --partition 0
修改AR顺序
AR: 副本的分配顺序
那么我们想要实现我们的需求
是不是把这个Json文件 中的 “replicas”: [0,1,2] 改一下就行了
比如改成 “replicas”: [2,1,0] ,
改完Json后执行,执行execute, 正式开始重分配流程!
迁移完成之后, 就会发现,Leader已经变成上面的第一个位置的副本「2」 了