kafka 在线修改副本数

背景  

  前段时间由于集群各台机器配置不一样,导致部分机器磁盘吃紧。定位发现kafka log数据占了一半的容量,而且某一个topic的数据惊人,50个partition,每个partition24G,3副本。算了一下3.6T的磁盘容量。而目前已经调整到3天的保留时间,不能再短了,只好缩减一下replication-factor的数量由3变为2,这样整个容量减少三分之一,也是很可观的量。

尝试

考虑到是kafka topic相关的属性,尝试命令

kafka 在线修改副本数_第1张图片

发现好像有点戏,于是就尝试修改某个topic下数据的副本数

原来这个参数不能改副本数只可以修改partition数量,官方说明

kafka 在线修改副本数_第2张图片

继续查看kafka命令发现有个kafka-reassign-partitions命令,研究一下

kafka 在线修改副本数_第3张图片

这边有个--reassignment-json-file参数可以指定topic下某个分区和对应副本所在的机器(broker.id),那我要是修改它的副本列表是否可以减少他的副本数呢,带着疑问就去尝试吧。

实验步骤

1. 调查topic=test001 分区副本信息

2. 制作分区副本配置文件,就是那个参数的json文件

3. 使用配置文件重新制定分区信息

4. 验证(分区副本信息,kafka log data的数量变化情况)

1. 调查topic=test001 分区副本信息

> kafka-topics --topic test001 --zookeeper localhost:2181/kafka --describe

kafka 在线修改副本数_第4张图片

2. 制作分区副本配置文件,就是那个参数的json文件

kafka 在线修改副本数_第5张图片

3. 使用配置文件重新制定分区信息

kafka-reassign-partitions --zookeeper localhost:2181/kafka --reassignment-json-file abc.json --execute

4. 验证(分区副本信息,kafka log data的数量变化情况)

kafka-topics --topic test001 --zookeeper localhost:2181/kafka --describe

kafka 在线修改副本数_第6张图片

确实分区副本信息中心变化了,从3个副本变成了2个。

再去验证数据

执行前

kafka 在线修改副本数_第7张图片

kafka 在线修改副本数_第8张图片

kafka 在线修改副本数_第9张图片

执行后,发现129上确实没有了topic=test001的partition 3的数据目录了

kafka 在线修改副本数_第10张图片

 

你可能感兴趣的:(kafka,kafka,副本数量变更)