文档章节

kafka的迁移干货

a
 allantaylor81
发布于 2015/04/22 19:38
字数 551
阅读 60
收藏 0

随着业务的发展, 服务器所在网段/机群不允许kafka继续保留在那, 需要移动到先机器上.

哎呀上面是废话,总的说就是: 2台老kafka不要了,数据要迁移到新的2台kafka上面.要求数据不丢失

 

通过查询官网,并无直接切换的命令,当前版本是kafka 0.8.1,  说是0.8.2才提供老机器的退役功能.

 

不过没关系, 我们有一个变通的方法:

kafka提供了修改复制因子的方法, 我们可以将她的复制目标机器改成新的节点.  这样所有发往老节点的数据都会被转移到新节点去.

等你将发送者的API修改后,让他目标指向新机器,  迁移工作就全部完成.

 

具体步骤如下:

1.在新节点上搭建kafka服务

原先我有2台机器, broker.id分别为1和2

现在我新机器上broker.id分别设置为3和4

 

2.启动所有kafka 服务

 

3.确认要移动的topics

  

kafka-topics.sh --list --zookeeper 192.168.103.47:2181  查看所有主题

 

复制这些topic,并写成如下格式的文件, 命名为 topics-to-move.json

{"topics": [

 {"topic": "fortest1"},

 {"topic": "fortest2"},

 {"topic": "fortest3"}

 ],

 "version":1

}

 

4.生成移动脚本

 

运行bin/kafka-reassign-partitions.sh --zookeeper 192.168.103.47:2181 --topics-to-move-json-file topics-to-move.json --broker-list "3,4" --generate 

 

其中3,4是你的新节点的broker.id

 

这样就会生成一串新的json数据

{"version":1,"partitions":[{"topic":"fortest1","partition":0,"replicas":[3,4]},其他部分省略}

 

将这一串json写入新文件reassignment-node.json

 

 

5.这时候,万事俱备, 开始迁移

bin/kafka-reassign-partitions.sh --zookeeper 192.168.103.47:2181 --reassignment-json-file reassignment-node.json --execute

 

6.适当时候, 运行如下命令,查看运行结果

 

bin/kafka-reassign-partitions.sh --zookeeper 192.168.103.47:2181 --reassignment-json-file reassignment-node.json --verify

 

 

 

假设出现

ERROR: Assigned replicas (3,4,0,1) don't match the list of replicas for reassignment (3,4) for partition [mpt-session,1]

这样的错误, 他并不是真的出错,而是指目前仍在复制数据中.

再过一段时间再运行verify命令,他就会消失(加入完成拷贝)

 

 

 

7.数据完成迁移后, 老的服务先别停.

8.修改所有客户端producer或者consumer连接指向新节点.

9.测试正常后, 关闭老节点

10.大功告成

本文转载自:http://www.cnblogs.com/dycg/p/3922352.html

共有 人打赏支持
a
粉丝 2
博文 120
码字总数 2912
作品 0
东城
阿里云消息队列Kafka商业化:支持消息无缝迁移到云上

7月25日,阿里云宣布正式推出消息队列Kafka,全面融合开源生态。在兼容Apache生态的基础上,阿里云消息队列Kafka彻底解决了开源产品稳定性不足的痛点,可用性达99.9%,数据可靠性99.999999%,...

中间件小哥
07/25
0
0
阿里云消息队列 Kafka 商业化首发 | 进一步提升 Kafka 在大数据生态中的价值

7月25日,阿里云即将直播发布消息队列Kafka,全面融合开源生态。 【直播传送门】 在全面兼容Apache Kafka生态的基础上,消息队列Kafka还具备了超易用,超高可用可靠性,扩缩容不操心,全方位...

hllpark
07/24
0
0
阿里云正式推出消息队列Kafka:全面融合开源生态

近日,阿里云宣布正式推出消息队列Kafka,全面融合开源生态。在全面兼容Apache Kafka生态的基础上,消息队列Kafka还具备了超易用,超高可用可靠性,扩缩容不操心,全方位安全诊断,数据安全有...

中间件小哥
07/19
0
0
kafka常用命令

kafka自带sh脚本使用示例: (1)启动/关闭kafka服务: `shell nohup env JMXPORT=9999 /path/to/kafka2.10-0.8.2.2/bin/kafka-server-start.sh config/server.properties >/dev/null 2>&1 ......

MrYx3en
2015/12/04
190
0
浅谈开源Kafka与腾讯云cKafka

今天下午参加了腾讯云+社区组织的kafka公开课,收获良多。正巧在工作中也遇到过kafka的问题,今天听完之后产生了非常多的感想。无奈篇幅有限,本人又文笔愚钝,所以今天的分享主要提及对我感...

老张的技术
06/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

多线程

1. 多线程概念。并发和并行的概念。 多线程指的是一段时间内cpu同时执行多个线程。一个程序至少运行>=1个进程,进程就是运行中的程序,而一个进程至少运行>=1个线程,线程是操作系统能调度的...

鱼想吃肉
29分钟前
0
0
HBase 表修复在线方式和离线方式

一、在线修复 1.1 使用检查命令 $ ./bin/hbase hbck 该命令可完整修复 HBase 元数据信息;存在有错误信息会进行输出; 也可以通过如下命令查看详细信息: $ ./bin/hbase hbck -details 1.2 ...

Ryan-瑞恩
54分钟前
2
0
redis 系列二 -- 常用命令

1.基础命令 info ping quit save dbsize select flushdb flushall 2.键命令 2.1 set 直接赋值 set a a 2.2 get 取值 get a 2.3 exists 是否存在 exists a 2.4 expire 设置剩余时间 秒 expire......

imbiao
今天
2
0
php foreach

<?php// 数组的引用$a=array(1,2,3,4,5);foreach($a as $key=>&$value){$value=$value*2;}print_r($a);echo " $key -------------------$value\r\n";/** * ...

小张525
今天
3
0
12-利用思维导图梳理JavaSE-多线程

12-利用思维导图梳理JavaSE-多线程 主要内容 1.线程概念 2.线程开发 3.线程的状态 4.线程的同步和死锁 5.Java5.0并发库类 QQ/知识星球/个人WeChat/公众号二维码 本文为原创文章,如果对你有一...

飞鱼说编程
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部