美文网首页
zk集群数据迁移和恢复

zk集群数据迁移和恢复

作者: 安静的码农 | 来源:发表于2021-11-04 22:46 被阅读0次


zk集群数据迁移和恢复

一、zk数据迁移,有如下两种方案:

1、利用zk集群超过半数仍然可用的特性,比如集群中有5个节点,可以将其中1~2个节点割裂出去,再添加1个新的节点,组成新的集群,以此实现数据迁移;

2、直接拷贝集群的元数据文件到新集群;

但第1种方案并不是最佳选择,例如zk集群连接数负载高,如果此时再减少节点数,则会导致集群负载变得更高,甚至集群崩溃。故采用第2种方案,通过拷贝元数据的方式来实现集群数据迁移和恢复。

二、zk数据迁移和恢复的实现思路

1、搭建好新的zk集群,并且启动集群(此时集群还没有数据);

2、停止新集群所有节点的zk进程;

3、删除新集群所有节点数据目录下的文件,包括:事务日志、快照、epoch文件

4、将老集群leader节点的事务日志、快照、epoch文件拷贝到新集群所有节点对应的数据目录下;

5、重新启动新集群;

三、注意事项:

如果新集群的两个epoch文件不删掉的话,会造成新集群无法启动;原因是:如果只是拷贝了老集群的快照、事务日志到新集群,新集群的节点在启动时会识别epoch文件中记录的当前epoch值,然后将这个epoch值和从老集群拷贝过来的元数据中的事务ID(zxid)进行比较,发现并不匹配,就会造成新集群无法正常启动。故需要将新集群中各个节点的epoch文件删除,将老集群的epoch文件、快照文件、事务日志文件一并拷贝到新集群的各个节点。

四、zk数据迁移和恢复的具体操作步骤:

1、搭建新集群:

1)、rpm -ivh jdk-8u20-linux-x64.rpm  

2)、cd  /data/  &&  tar  -zxvf  zk_server.tgz  ###解压到/data或者/data1

3)、cd  /data/  &&  mv  zk_server  zk.1     ###myid为1的节点,家目录为/data/zk.1、myid为2的节点,家目录为/data/zk.2

4)、解压之后,可以看到3个目录:

cd  /data/zk.1  &&  ls -l

zk_data      ###保存zk快照数据的主目录

zk_log       ###保存zk事务日志的主目录

zookeeper    ###程序路径,包含配置文件

5)、cd  /data/zk.1/zk_data  &&  echo 1 > myid  ###配置节点myid,myid为1的节点配置成1,myid为2的节点配置成2,myid为3的节点配置3

6)、cd  /data/zk.1/zookeeper/conf  &&  cp -ar  zoo.cfg.template  zoo.cfg

7)、vim  zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

clientPort=2181

autopurge.snapRetainCount=500

autopurge.purgeInterval = 48 

dataDir=/data/zk.1/zk_data    ###myid为2则配置为/data/zk.2/zk_data

dataLogDir=/data/zk.1/zk_log  ###myid为2则配置为/data/zk.2/zk_log

server.1=节点1的IP:8880:7770          #节点1的配置

server.2=节点2的IP:8880:7770          #节点2的配置

server.3=节点3的IP:8880:7770           #节点3的配置

8)、其余2个节点的安装部署方法也是一样

9)、依次启动3个节点,并检查状态

启动:

cd  /data/zk.1/zookeeper/bin/  &&   nohup sh  zkServer.sh start  > zookeeper.out &

检查节点状态:

cd /data/zk.1/zookeeper/bin/ && ./zkServer.sh  status  

连接本地节点,查看数据:

cd /data/zk.1/zookeeper/bin/ && ./zkCli.sh -server 127.0.0.1:2181

2、停止新集群所有节点的zk进程:

cd /data/zk.1/zookeeper/bin/ && sh zkServer.sh stop

cd /data/zk.2/zookeeper/bin/ && sh zkServer.sh stop

cd /data/zk.3/zookeeper/bin/ && sh zkServer.sh stop

3、删除新集群所有节点数据目录下的文件,包括:事务日志、快照、epoch文件(以节点1为例):

cd  /data/zk.1/zk_data/version-2  &&  rm  -f  snapshot.*  &&  rm  -f  acceptedEpoch  && rm  -f  currentEpoch

cd  /data/zk.1/zk_log/version-2  &&  rm  -f  log.*

4、将老集群leader节点的事务日志、快照、epoch文件拷贝到新集群所有节点对应的数据目录下(以leader节点的数据为准):

1)、备份老集群leader节点的数据目录下的文件(拷贝到本地的新建的zk_meta_dir目录)

最新的log事务日志文件  ###不是所有的log文件,而是最新的log文件

最新的snapshot文件   ###不是所有的snapshot文件,而是最新的snapshot文件

acceptedEpoch文件

currentEpoch文件

2)、将leader节点zk_meta_dir目录的log文件、snapshot文件、Epoch文件分发到新集群每个节点对应的目录,例如节点1的/data/zk.1/zk_data/version-2、/data/zk.1/zk_log/version-2

5、重新启动新集群:

以节点1为例:

cd  /data/zk.1/zookeeper/bin/  &&   nohup sh  zkServer.sh start  > zookeeper.out &

相关文章

  • zk集群数据迁移和恢复

    zk集群数据迁移和恢复 一、zk数据迁移,有如下两种方案: 1、利用zk集群超过半数仍然可用的特性,比如集群中有5...

  • (5)kafka元数据(1)

    zk进行 kafka 集群元数据和状态管理,未来将去zk,用Raft实现,zk集群主要作用: 1)存元数据: 主题...

  • 一篇文章教你自建hadoop集群迁移到EMR

    自建集群要迁移到EMR集群,往往需要迁移已有数据。本文主要介绍hdfs数据和hive meta数据如何迁移。 前置...

  • hdfs文件迁移

    hadoop跨集群之间迁移HDFS数据 不同hadoop集群之间迁移hive数据 hadoop跨集群之间迁移hiv...

  • zookeeper数据迁移

    因业务需要,迁移生产环境,所以涉及到了zk数据迁移。运维小哥最开始用文件复制的方式迁移,迁移过去以后,发现zk的顺...

  • Zookeeper-ZAB协议

    ZK集群中角色 Leader 提供数据读和写能力 负责集群写请求的协调 同步数据到follower 参与选举 Fo...

  • 锻骨境-第6层 k8s集群数据备份与恢复

    K8s 集群的数据备份和恢复确实主要就是etcd 数据库集群的备份和恢复 etcd集群用同一份snapshot恢复...

  • HDFS搞事情系列(一):跨集群数据迁移

    需求 老集群中的HDFS数据迁移至新集群。 迁移之前需要考虑的事情 1、迁移总数据量有多少?2、新老集群之间的带宽...

  • HBase 的数据迁移importTsv功能

    数据迁移场景举例 Hbase集群装好了,若需要往表中装数据; 数据的备份,如测试集群往生产集群上迁移。 几种HBa...

  • Kylin跨集群数据迁移

    简单记录kylin数据及元数据迁移过程 1、备份kylin的元数据,在新的集群中恢复kylin的元数据(参考官网)...

网友评论

      本文标题:zk集群数据迁移和恢复

      本文链接:https://www.haomeiwen.com/subject/swllzltx.html