博客
关于我
kafka 磁盘迁移
阅读量:798 次
发布时间:2023-04-02

本文共 2024 字,大约阅读时间需要 6 分钟。

磁盘迁移指南

背景介绍:在Kafka搭建过程中,由于磁盘配置过大且成本高昂,需要对现有磁盘进行迁移,以转移到小容量磁盘。

原Kafka配置:

  • log.dirs=/data1/kafka/var/kafka-logs/1,/data2/kafka/var/kafka-logs/1(Kafka支持多磁盘配置以提高吞吐量)
  • log.retention.hours=168

修改后配置:

  • log.dirs=/data3/kafka-logs,/data4/kafka-logs
  • log.retention.hours=72
  • 修改topic存储时间适量减少topic存储时间,可以加快迁移节奏,前提是确保本身日志量不超过100G。如果不做这一步可能会影响迁移效率。
  • 此外,可以预估调整后的磁盘占用大小。

    此类临时配置无需重启Kafka,修改会提交至Zookeeper,Kafka会优先读取Zookeeper中的配置。retention.ms=21600000(表示保存时间,单位毫秒,等于6小时),可以通过以下命令批量处理多个topic:

    sh ./bin/kafka-configs.sh  --zookeeper {zk配置地址} --alter --add-config 'retention.ms=21600000' --entity-type topics --entity-name {topic_name}

    观察kafkaServer.out日志,正常broker每5分钟触发一次删除任务,等看到包含"...delete..."的日志,并且磁盘文件大小已接近预估值时,说明删除完成。

    1. 停止Kafka服务执行以下命令停止服务:
    2. ./bin/kafka-server-stop.sh stop

      观察日志,出现"shutdown complete"字样时,使用jps -m命令确认Kafka进程已停止。

      1. 执行数据拷贝创建目标目录并执行异步拷贝,防止窗口过期:
      2. mkdir -p /data3/kafka-logsmkdir -p /data4/kafka-logsmkdir -p /home/hadoop/kafka_2.11-0.9.0.1/logsnohup cp -r /data1/kafka/var/kafka-logs/1/* /data3/kafka-logs/ &nohup cp -r /data2/kafka/var/kafka-logs/1/* /data4/kafka-logs/ &

        拷贝完成后,验证命令:

        ps -ef | grep kafka-logsdf -h

        当旧磁盘空间大小与新磁盘一致且没有kafka-logs进程时,拷贝完成。

        拷贝完成后,将原目录归档:

        mv /data1/kafka /data1/kafka_bakmv /data2/kafka /data2/kafka_bak
        1. 修改配置更新Kafka配置文件:
        2. vim /home/hadoop/kafka_2.11-0.9.0.1/config/server.properties

          将以下配置修改为:

          log.dirs=/data3/kafka-logs,/data4/kafka-logslog.retention.hours=72

          若需要,调整gc日志配置:

          vim /home/hadoop/kafka_2.11-0.9.0.1/bin/kafka-run-class.sh

          将KAFKA_GC_LOG_OPTS设置为空:

          KAFKA_GC_LOG_OPTS=""

          1. 启动Kafka服务执行以下命令启动服务:
          2. ./bin/kafka-server-start.sh -daemon config/server.properties

            观察日志,查看启动完成信息,并确认集群中无未同步副本。

            验证迁移完成:

            tail -f ./logs/kafkaServer.outls -lrth /data1ls -lrth /data2
            1. 恢复topic存储时间千万不要忘记恢复存储时间,处理所有topic:
            2. sh ./bin/kafka-configs.sh  --zookeeper {zk配置地址} --alter --delete-config 'retention.ms' --entity-type topics --entity-name {topic_name}

              备注:为什么要拷贝磁盘文件而不是直接修改配置重启Kafka?

              • 如果新broker加入集群需要同步数据,同步过程中可能占满带宽或磁盘IO,影响业务可用性
              • Kafka会在磁盘下生成recovery-point-offset-checkpoint和replication-offset-checkpoint文件记录存储信息,拷贝后不会导致数据错乱
              • 拷贝磁盘数据在数据量较大时更为合适

    转载地址:http://dqefk.baihongyu.com/

    你可能感兴趣的文章
    OSPF 四种路由类型:Intra Area、Inter Area、第一、二类外部路由
    查看>>
    OSPF 学习
    查看>>
    OSPF 支持的网络类型:广播、NBMA、P2MP和P2P类型
    查看>>
    OSPF 概念型问题
    查看>>
    OSPF 的主要目的是什么?
    查看>>
    OSPF5种报文:Hello报文、DD报文、LSR报文、LSU报文和LSAck报文
    查看>>
    SQL Server 存储过程分页。
    查看>>
    OSPFv3:第三版OSPF除了支持IPv6,还有这些强大的特性!
    查看>>
    OSPF不能发现其他区域路由时,该怎么办?
    查看>>
    OSPF两个版本:OSPFv3与OSPFv2到底有啥区别?
    查看>>
    SQL Server 存储过程
    查看>>
    OSPF在什么情况下会进行Router ID的重新选取?
    查看>>
    OSPF在大型网络中的应用:高效路由与可扩展性
    查看>>
    OSPF太难了,这份OSPF综合实验请每位网络工程师查收,周末弯道超车!
    查看>>
    OSPF技术入门(第三十四课)
    查看>>
    OSPF技术连载10:OSPF 缺省路由
    查看>>
    OSPF技术连载11:OSPF 8种 LSA 类型,6000字总结!
    查看>>
    OSPF技术连载12:OSPF LSA泛洪——维护网络拓扑的关键
    查看>>
    OSPF技术连载13:OSPF Hello 间隔和 Dead 间隔
    查看>>
    OSPF技术连载14:OSPF路由器唯一标识符——Router ID
    查看>>