使用命令生成迁移计划
- 新建文件topic-to-move.json 加入内容如下:
{"topics": [{"topic":"test-topic"}], "version": 1
- 使用–generate生成迁移计划
kafka-reassign-partitions --zookeeper cdh-002/kafka \
--topics-to-move-json-file /opt/lb/topic-to-move.json \
--broker-list "1,2" --generate
输出日志:(从日志可知各个分区副本所在的Broker节点,以及建议的副本分布)
Current partition replica assignment (当前分区副本分布)
{"version":1,"partitions":[{"topic":"test-topic","partition":0,"replicas":[1,3]},{"topic":"test-topic","partition":2,"replicas":[1,3]},{"topic":"test-topic","partition":1,"replicas":[1,3]}]}
Proposed partition reassignment configuration (建议分区副本分布)
{"version":1,"partitions":[{"topic":"test-topic","partition":0,"replicas":[1,2]},{"topic":"test-topic","partition":2,"replicas":[1,2]},{"topic":"test-topic","partition":1,"replicas":[1,2]}]}
- 新建文件kafka-reassign-execute.json,并把建议的分区副本分布配置拷贝到新建文件中。(生产上一般会保留当前分区副本分布,仅更改下线的分区,这样数据移动更少)
- 使用–execute执行迁移计划 (如果数据量大,执行的时间会比较久,耐心等待即可)
kafka-reassign-partitions --zookeeper cdh-002/kafka \
--reassignment-json-file /opt/lb/kafka-reassign-execute.json \
--execute
- 使用-verify查看迁移进度
kafka-reassign-partitions --zookeeper cdh-002/kafka \
--reassignment-json-file /opt/lb/kafka-reassign-execute.json \
--verify
- 通过kafak存储路径查看是否迁移过去
自定义生成迁移计划
- 自己写json格式的迁移计划
cat custom-reassignment.json
{"version":1,"partitions":[{"topic":"test-topic","partition":0,"replicas":[5,6]},{"topic":"test-topic2","partition":1,"replicas":[2,3]}]}
2.使用命令执行
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file custom-reassignment.json --execute