之前的文章讲述了Kafka的分区重分配,该方法同样可以用来增加或减少Kafka topic的副本数。该方法,可灵活地运用于提高topic的高可用性,提高数据的读写等场景。
从一个副本数,增加到2个副本数。
创建reassign.json文件
{"version":1,"partitions":[{"topic":"topic_replica_test","partition":0,"replicas":[164,150]},{"topic":"topic_replica_test","partition":1,"replicas":[165,151]},{"topic":"topic_replica_test","partition":2,"replicas":[150,152]}]}
执行重分配操作
kafka-reassign-partitions --zookeeper zk1:2181 --reassignment-json-file reassign.json --execute
输出会显示当前partition的分布Current partition replica assignment,可以保存下来以便有问题进行回滚。
再次查看topic的partiton分布和replica数可以看到,已经增加了副本。
kafka-topics --zookeeper zk1:2181 --topic topic_replica_test --describe
再增加一个副本,达到3个副本数
kafka-reassign-partitions --zookeeper zk1:2181 --reassignment-json-file reassign.json --execute
如果topic数据量比较大,可能调整副本数的过程会非常慢,可以用verify命令查询进度。
kafka-reassign-partitions --zookeeper zk1:2181 --reassignment-json-file reassign.json --verify
再次查看topic的partiton分布和replica数可以看到,已经增加了3个副本。
kafka-topics --zookeeper zk1:2181 --topic topic_replica_test --describe
欢迎关注我的公众号“九万里大数据”,原创技术文章第一时间推送。