原来有一个5台的kafka集群,现在需要用一台新的服务器替换原先的一台broker,所以需要将这个broker上所有partition的数据都迁移过去。
我的kafka是0.8.2.1的版本,其本身提供了一个kafka-reassign-partitions.sh工具帮助完成这个工作。
首先,需要在新的机器上启动kafka进程。然后,需要到老的broker上查看其本身包含哪些topic的partition数据。当然,你可以写个程序到zookeeper上遍历所有topic的partition分布情况,然后找出需要下线机器相关的信息。我比较懒,手动登录到老broker上,进入kafka-logs目录,就会看到很多类似与
topic1-0
topic2-1
topic2-4
这样的子目录。topic1,topic2是topic名称,-后面的就是partition编号。
知道了老broker上有哪些数据就可以编写迁移文件了。
reassignment.json
{
"version": 1,
"partitions": [
{
"topic": "topic1",
"partition": 0,
"replicas": [
6
]
},
{
"topic": "topic2",
"partition&#