单副本kafka迁移分区

kafka信息:

版本:kafka_2.11-0.10.0.0

备注:单副本

需求:

broker设备上有另外一块硬盘可以使用,所以修改kafka配置,添加一块新硬盘

操作思路:

1.1. 将需要下线的broker分区全部迁移到其他broker

1.2. ./bin/kafka-server-stop.sh

1.3. 修改配置,扩容分区,启动kafka

 

步骤2介绍的是迁移1个分区怎么操作,在步骤3,会针对此次需求进行总结介绍

 

2.1 登陆zk获取相关信息,ssh zk设备,

2.2. 查看有哪些brokers

./bin/zkCli.sh -server localhost:8181
执行 ls /brokers/ids
[134, 157, 135, 136, 163, 164]

可以看到有6个broker

2.3. 登陆kafka设备,

2.4. 查看有哪些topic

./kafka-topics.sh --list --zookeeper 10.10.10.1:8181

2.5.查看某一个topic的分区信息。执行这一步是为了先拿一个topic做测试

[work@kafka-136 kafka_2.11-0.10.0.0]$ ./bin/kafka-topics.sh --describe --topic topic-name1 --zookeeper 10.69.59.186:8181|more
Topic:topic-name1 PartitionCount:4 ReplicationFactor:1 Configs:
Topic: topic-name1 Partition: 0 Leader: 157 Replicas: 157 Isr: 157
Topic: topic-name1 Partition: 1 Leader: 163 Replicas: 163 Isr: 163
Topic: topic-name1 Partition: 2 Leader: 164 Replicas: 164 Isr: 164
Topic: topic-name1 Partition: 3 Leader: 134 Replicas: 134 Isr: 134

2.6.将topic-name1的分区,重新迁移一下,此json用于生成迁移策略topics-to-move.json

{"topics": [{"topic": "topic-name1"}],
"version":1
}

2.7.生成一个执行前的迁移计划,保存为./qianyi/qianyi-topic-name1.json

./bin/kafka-reassign-partitions.sh --zookeeper 10.10.10.1:8181 --topics-to-move-json-file ./qianyi/topics-to-move.json --broker-list "156,163" --generate

2.8.开始执行,迁移分区

./bin/kafka-reassign-partitions.sh --zookeeper 10.10.10.1:8181 --reassignment-json-file ./qianyi/qianyi-topic-name1.json --execute

2.9.查看执行迁移的进度

./bin/kafka-reassign-partitions.sh --zookeeper 10.10.10.1:8181 --reassignment-json-file ./qianyi/qianyi-topic-name1.json --verify
Status of partition reassignment:
Reassignment of partition [topic-name1,1] completed successfully    #迁移成功
Reassignment of partition [topic-name1,0] is still in progress    #正在迁移
Reassignment of partition [topic-name1,3] completed successfully 
Reassignment of partition [topic-name1,2] completed successfully

3. 针对此次需求的操作步骤

因为我们是要把某个broker上的所有分区都迁移走,而按照上面的迁移步骤会非常麻烦,并且所有的分区重新分配也占用很多时间和资源,使用下面的步骤来减少时间

3.1步骤2.6的topics-to-move.json文件,把所有topic都写进去(这里只是生成迁移策略文件,我们是想把所有topic都迁走),

{"topics": [{"topic": "ylog_json"},
{"topic": "log"},
{"topic": "log_qa"},
{"topic": "yn"}],
"version":1

3.2生成一个迁移计划,./qianyi/generate.json

    generate.json 文件里,Current partition replica assignment下面是当前分区的分布,是用于迁移出问题之后的回滚的,

 我们将Current partition replica assignment这部分内容复制到一个另外一个文件里面,单独对需要迁移的broker进行替换,

最后保存为 exec.json

3.3 开始执行 exec.json ,开始迁移

3.4 修改kafka配置文件config/server.properties,添加新分区的路径

log.dirs=/home/work/kafka_2.11-0.10.0.0/log,/data1/kafka_2.11-0.10.0.0/log

3.5 重启kafka

./bin/kafka-server-stop.sh 

./bin/kafka-server-start.sh 

 

posted on 2019-08-02 14:12  冰冰爱学习  阅读(543)  评论(0编辑  收藏  举报

导航