./kafka-reassign-partitions.sh --zookeeper 10.191.132.147:2181/kafka --reassignment-json-file comm_partitions-to-move.json --execute
说明:
10.191.132.147:2181 是zookeeper 通信ip和port.
comm_partitions-to-move.json 是个json文件,文件内容指定了topic,需要的迁移分区及目标分区。
格式如下:
{
"version":1,
"partitions":
[
{"topic":"Barad_Comm","partition":0,"replicas":[5,1]},
{"topic":"Barad_Comm","partition":1,"replicas":[6,2]},
{"topic":"Barad_Comm","partition":2,"replicas":[3,3]},
{"topic":"Barad_Comm","partition":3,"replicas":[4,4]},
{"topic":"Barad_Comm","partition":4,"replicas":[0,5]},
{"topic":"Barad_Comm","partition":5,"replicas":[1,6]},
{"topic":"Barad_Comm","partition":6,"replicas":[2,7]},
{"topic":"Barad_Comm","partition":7,"replicas":[8,8]}
]
}
./kafka-reassign-partitions.sh --zookeeper 10.191.132.147:2181/kafka --reassignment-json-file comm_partitions-to-move.json --verify
./kafka-topics.sh --zookeeper 10.191.132.147:2181/kafka --describe --topic Barad_Comm
成功结果
Reassignment of partition [Barad_Comm,2] completed successfully
如果出现出现类似如下信息:
ERROR: Assigned replicas (3,9,7) don't match the list of replicas for reassignment (3,9) for partition [Barad_Comm,5]
Reassignment of partition [Barad_Comm,7] failed
等一段时间即可,说明正在迁移, 数据量大的话,可能要几个甚至十几个小时
kafka 迁移过程中,会出现磁盘io的突增,对机器负载有所影响,建议一次迁移的topic 分区数量不要太多,分批次迁移较为稳妥。
kafka 迁移完成后,需要同时使用verify 命令和 describe验证。确保对涉及迁移的分区,leader 是Replicas的其中一个,并且 Replicas是迁移后的目标节点,同时,Isr也必须是Replicas的子集。
如图所示,正常的kafka分区分布状态。
现网操作过程中,出现原来迁移之前的节点依然出现在Replicas中,这个需要注意,长时间如此,会引发大量错误日志,引发磁盘io高负载,甚至导致其他topic不能正常工作。 遇到这中问题,需要先删除zookeeper 上的迁移任务(如果有的话),并再次执行迁移命令execute。确保迁移后kafka topic 状态是正常的。
【备注】这些命令适用于0.8.1 版本,其他版本未做验证
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。