注意事项:
迁移的时候找个流量小的时候进行迁移
- 先确认需要迁移的topic
- 登录任意一台kafka 实例所在服务器,并进入到kafka的home目录
3. 查看topic分区情况
bin/kafka-topics.sh --zookeeper ${zkAddr} --topic ${topicName} --describe
说明:
${zkAddr}:zk地址,可以看kafka的配置文件获取
${topicName}:要查看的topic名称
4. 生成分配计划
生成topics-to-move.json文件
vi topics-to-move.json
{
"topics":[{"topic":"${topicName}"}],
"version":1
}
说明:
${topicName}:要迁移的topic名称
version:固定值 1
5.执行分配计划
bin/kafka-reassign-partitions.sh --zookeeper ${zkAddr} --topics-to-move-json-file topics-to-move.json --broker-list "${brokerList}" --generate
说明:
${brokerList}:扩容后的所有机器的broker.id
把上面Proposed partition reassignment configuration 下的计划json复制到topic-reassignment.json文件中
6. 执行分配
bin/kafka-reassign-partitions.sh --zookeeper ${zkAddr} --reassignment-json-file topic-reassignment.json --execute (--throttle 1024000)
说明 :--throttle 为可选值,限制分区迁移速度,单位byte
7. 查看重新分区进度
bin/kafka-reassign-partitions.sh --zookeeper ${zkAddr} --reassignment-json-file topic-reassignment.json --verify
completed successfully 表示已完成
is still in progress 表示进行中
8.再次查看topic分区情况
bin/kafka-topics.sh --zookeeper ${zkAddr} --topic ${topicName} –describe