文档章节

kafka的迁移干货

a
 allantaylor81
发布于 2015/04/22 19:38
字数 551
阅读 62
收藏 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 Partition Leader选主机制

Kafka Partition Leader选主机制 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) 构建中小型互联网企业架构...

tantexian
11/14
0
0
干货满满,腾讯云+社区技术沙龙 Kafka Meetup 深圳站圆满结束

云加社区技术沙龙 发表于腾讯云技术沙龙订阅 56 干货满满,腾讯云+社区技术沙龙 Kafka Meetup 深圳站圆满结束 云+导语:4月22日,由腾讯云和 Kafka 社区主办、开源中国协办的腾讯云+社区技术...

腾讯云加社区
04/25
0
0
当Elasticsearch遇见Kafka

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由michelmu发表于云+社区专栏 Elasticsearch作为当前主流的全文检索引擎,除了强大的全文检索能力和高扩展性之外,对多种数据...

腾讯云加社区
11/12
0
0
ES(elasticsearch)搜索引擎

ES(elasticsearch)搜索引擎 0、授人以渔,少走半年弯路! 死磕 Elasticsearch 方法论:普通程序员高效精进的 10 大狠招! 一、Elasitcsearch基础篇 1.1 Elasitcsearch基础认知 1、Elasticse...

Ocean_K
09/11
0
0
手把手教你Serverless的沙龙来不来约?

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ “从行业趋势看,Serverless是云计算必经的一场革命。” “无服务器云函数是实现微服务的最好的方法之一。” 在微服务热翻天的时候...

腾讯云社区
2017/12/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue- 对象语法 v-bind:class与对象语法的使用

我们可以传给 v-bind:class 一个对象,以动态地切换 class 。 <div v-bind:class="{ active: isActive }"></div>//对象语法也就是在v-bind:class绑定一个对象的时候,里面的值将影响最终取值...

文文1
19分钟前
1
0
epoll中使用

1、一个线程epoll_wait时,另一个线程调用epoll_ctl是安全的。 2、使用edge触发,在socket有数据到来后,不收取数据,再次调用epoll_ctl将socket加入,仍会触发下一次动作。 asio用该方法来发...

gelare
46分钟前
1
0
PHP规范PSR2

PSR标准 - PSR-2 为了尽可能的提升阅读其他人代码时的效率,下面例举了一系列的通用规则,特别是有关于PHP代码风格的。 各个成员项目间的共性组成了这组代码规范。当开发者们在多个项目中合作...

geek土拨鼠
今天
5
0
【极简】如何在服务器上安装SSL证书?

本文适合任何人了解,图形化操作。下面以腾讯云为例,并且服务器(linux)也安装了宝塔面板。 1.登陆腾讯云账号进入控制台,找到SSL的产品 2.按要求申请并填写表单,记住私钥密码 3.提交后,待...

皇冠小丑
今天
1
0
深入理解编译器

深入理解编译器 原文出处 欢迎向Rust中文社区投稿,投稿地址,好文将在以下地方直接展示 1 Rust中文社区首页 2 Rust中文社区Rust文章栏目 3 知乎专栏Rust语言 编程语言是如何工作的 从内部理解...

krircc
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部