导航:首页 > 网络问题 > zk网络异常临时节点恢复

zk网络异常临时节点恢复

发布时间:2023-05-27 01:16:15

1. zk集群数据迁移和恢复

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 &

2. 不小心把zk的子节点和数据删除了 怎么恢复啊,求大神指点

没有散销删除数据库文件(*.mdb,*.ldb)的话重新附加一遍就可以了
要是删除了颂答数据库野掘慧文件的话,用数据恢复软件,Fanl Date或者DG把数据库文件恢复出来再附加进去就可以了

3. 九、宕机恢复原理

1、Master负载并不很高,基本采用热备的方式来实现Master高可用

2、RegionServer宕机的恢复主要原因有。

2.1、Full GC异常

2.2、HDFS异常

2.3、物理节点宕机

2.4、HBase Bug

3、RegionServer故障恢复原理

3.1、利用ZK临时节点机制,RS在启动会在ZK注册成临时节点,同时Master会Watch这个节点,一般情况下RegionServe会周期性的向ZK发送心跳,如果在超时时间内没有收到心跳,临时节点就会离线,这个消息马上会通知给到Master,Master检测到RS宕机

3.2、切分未持久化的HLog日志,HLog包含多个Region的数据,为了能够按照Region一个个进行数据恢复,首先需要对HLog按照Region进行分组。把同一个Region的日志放一块,便于一个个Region回放。

3.3、Master重新分配宕机RegionServer上的region,将这些Region重新分配到其他可用的RS上。

3.4、按照Region回放吵段HLog

3.5、完成修复,对外提供服务

4、HLog切分大有学问

4.1、0.96版本之前的切分策略:Master单机切分HLog

4.1.1、将待切分的日志重命名,主要防止在某些情况下RS并没有真正宕机,但是Master已经在进行故障恢复了,但是RS还在接受写入请求导致数据不一致。重命名之后此时用户的请求就会异常终止。

4.1.2、读取HLog数据对数据按照Region分组。

4.1.3、切分完成之后Master会对每个Region HLog数据写入各个Region对应的HDFS目录。

4.1.4、Region对日志按顺序进行会回放。

缺点:如升孝誉果需要恢复的数据有几十G 或者更大,Master单机切片的搞法可能需要数小时。

4.2、分布式切分HLog策略

4.2.1、Master将待切分的日志路径发布到ZK节点上,每个日志为一个任务,每个任务都有对应的状态,起始状态为TASK_UNASSIGNED

4.2.2、RS启动之后都注册这个节点等待新任务,一旦Master发布任务,RS就会抢占该任务

4.2.3、抢占任务先看任务状态,如果是TASK_UNASSIGNED,则说明没有被抢占,然后尝试去修改状态为TASK_OWEND,慎隐如果修改成功,表名任务抢占成功。如果修改失败说明被别的RS抢占了。

4.2.4、RS抢占任务成功了之后,将任务分给相应的线程处理,如果处理成功则修改状态为TASK_DONE;如果失败,则状态修改为TASK_ERR。

4.2.5、Master一直监听ZK节点状态的变更,如果状态为TASK_ERR,则重新发布任务,如果成功则删除对应的节点。

4.2.6、分布式切分举例

1)假设Master当前发布了4个任务,即当前需要回放4个日志文件HLog1(H1)、HLog2(H2)、HLog3(H3)、Hlog4(h4)

2)假设RS1抢占了H1,H2;RS2抢占了H3;RS3抢占到了H4

3)以RS1为例,他会把H1,H2,分给2个HlogSpliter线程进行处理,HLogSpliter负责对日志文件执行具体的切分,

具体切分步骤用4.1策略差不多

优点:通过多RS同时执行HLog切分,解决了Master单机切分带来的耗时长的问题

缺点:假设一个宕机的RS上有200个Region,有90个Hlog,由于每个HLog都需要按Region分组,所以这种切分方法会产生90*200=18 000 个小文件。

4.4、分布式日志回放策略

相比分布式切分HLog策略,流程上主要改动了两点

1)、不是先切分在分配Region,而是先分配Region之后再进行Hlog切分,并且此时的Region是recovering状态,可以对外提供写服务

2)、切分HLog逻辑同4.2区别是分布式回放策略并没有先写入文件,而是直接回放。

这种设计大大减少小文件的IO消耗,解决4.2的短板。

阅读全文

与zk网络异常临时节点恢复相关的资料

热点内容
网络费账单如何打印 浏览:711
蚌端口移动网络电视直播 浏览:557
海康网络模拟信号摄像头 浏览:155
苹果11系统升级141后没有4G网络 浏览:441
网络征婚途径有哪些 浏览:61
网络线一圈是多少米 浏览:849
保定万牛网络科技是做什么 浏览:805
家居网络营销推广策略 浏览:441
图片的网络线从哪里看 浏览:936
网络点开为什么没有共享的 浏览:261
怎样才可以隐藏无线网络 浏览:129
美国网络用语怎么说潮流 浏览:22
路由器组网避免网络冲突 浏览:528
我想用无线网络 浏览:99
无可用移动网络是什么意思 浏览:261
海康网络容错可以不设置地址吗 浏览:1001
苹果手机能连上wifi但是没网络 浏览:740
刷机显示网络异常 浏览:701
共享单车网络小差是什么意思 浏览:407
网络贸易对外汉语培训哪里好 浏览:110

友情链接