kafka优选副本切换办法

南墨2年前技术文章684

      1. 以topic test为例,假设test的分布为以下状态。

Topic:test PartitionCount:3 ReplicationFactor:2 Configs:

Topic: test Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2

Topic: test Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3

Topic: test Partition: 2 Leader: 3 Replicas: 3,1 Isr: 1,3

2.  假设现在broker-1节点出现问题,希望parititon-0的优先副本发生切换,即由Replicas: 1,2变为

Replicas: 2,1,于此同时,leader由1切换到2。

首先编写迁移文件move.json,内容如下:

{"partitions": [{"topic": "test", "partition": 0, "replicas": [2,1] }],"version":1}

其中,文件的意义是:修改调换partition 0 的replicas的顺序为[2,1]

3.  执行迁移脚本

sh kafka-reassign-partitions.sh --zookeeper zookeeper_IP:24002/kafka --reassignment-json-file move.json --execute

执行完成后的结果为:

Topic:test PartitionCount:3 ReplicationFactor:2 Configs:

Topic: test Partition: 0 Leader: 1 Replicas: 2,1 Isr: 1,2

Topic: test Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3

Topic: test Partition: 2 Leader: 3 Replicas: 3,1 Isr: 1,3

此时,partition-0的副本顺序变为了Replicas: 2,1

构建副本切换文件

创建excution.json,内容为:

{"partitions":[{"topic": "test", "partition": 0}]}

执行副本切换脚本

kafka-preferred-replica-election.sh --zookeeper zookeeper_IP:24002/kafka --path-to-json-file excution.json

执行后结果如下:

Topic:test PartitionCount:3 ReplicationFactor:2 Configs:

Topic: test Partition: 0 Leader: 2 Replicas: 2,1 Isr: 1,2

Topic: test Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3

Topic: test Partition: 2 Leader: 3 Replicas: 3,1 Isr: 1,3

此时,leader已切换broker-2


kafka-preferred-replica-election.sh 可以不加后面的副本切换脚本而直接执行,例如:

kafka-preferred-replica-election.sh --zookeeper zookeeper_IP:2181/kafka,这样会将真个集群的leader全部调整到优选副本


相关文章

Hive 重新编译-解决Tez JobName的问题

Hive 重新编译-解决Tez JobName的问题

本文采用linux编译首先下载源码https://dlcdn.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-src.tar.gz源码位置ql/src/jav...

PG的多版本并发控制(三)

三、多版本并发控制3.1 常见多版本并发的实现方式第一种方式是,数据库仅保存最新版本数据,将发生变更的旧行版本数据写到其他地方如undo,当需要读取旧版本数据时,通过undo重构。oracle和MyS...

使用clickhouse-copier迁移数据

说明clickhouse-copier是clickhouse官方提供的一个数据迁移工具。支持将clickhouse表从一个集群迁移到另外一个集群。使用clickhouse-copier有一些限制条件:...

gitlab的备份和还原

由于gitlab中存放的都是开发人员的工作成果,所以为了保证数据安全,我们会定期对数据进行备份,对gitlab进行备份将会创建一个包含所有库和附件的归档文件。对备份的恢复只能恢复到与备份时的gitla...

Python 查询字符串转字典

Python 标准库中的 urllib.parse.parse_qs() 函数可以将查询字符串解析为一个字典,这个函数会将查询字符串中的键值对解析为字典的键和值。实例:from urllib.pars...

企业级大数据安全架构(四)

企业级大数据安全架构(四)

Ranger是支持审计功能的,安装时可以选择审计数据保存的位置,默认支持Solr和HDFS。HDFS的配置比较简单,这里就不赘述了,我们这里使用Ambari默认自带的Solr保存审计日志,下面部署So...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。