zoukankan      html  css  js  c++  java
  • kafka的迁移干货

    随着业务的发展, 服务器所在网段/机群不允许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.大功告成
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    [deviceone开发]-底部弹出选择
    [deviceone开发]-动态添加组件add方法的示例
    [deviceone开发]-openPage的动画效果示例
    [deviceone开发]-do_Album的简单示例
    [deviceone开发]-Star分享的几个示例
    [deviceone开发]-do_Webview的基本示例
    [deviceone开发]-do_Webview加载JQueryMobile的示例
    [deviceone开发]-心形点赞动画示例
    函数式编程思维学习 (1)
    android 14.04 64位 adb cannot run program adb
  • 原文地址:https://www.cnblogs.com/dycg/p/3922352.html
Copyright © 2011-2022 走看看