• 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.大功告成
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Oracle基础知识整理
    linux下yum安装redis以及使用
    mybatis 学习四 源码分析 mybatis如何执行的一条sql
    mybatis 学习三 mapper xml 配置信息
    mybatis 学习二 conf xml 配置信息
    mybatis 学习一 总体概述
    oracle sql 语句 示例
    jdbc 新认识
    eclipse tomcat 无法加载导入的web项目,There are no resources that can be added or removed from the server. .
    一些常用算法(持续更新)
  • 原文地址:https://www.cnblogs.com/dycg/p/3922352.html
Copyright © 2020-2023  润新知