導航:首頁 > 網路問題 > 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網路異常臨時節點恢復相關的資料

熱點內容
蘋果電腦軟體怎麼設置無線網路 瀏覽:165
網路連接被中斷 瀏覽:735
安卓手機還原網路系統怎麼還原 瀏覽:465
光貓誤刪了網路設置上不了網 瀏覽:821
網路高級設置怎麼選 瀏覽:478
系統更新了wifi連不上網路 瀏覽:123
數字音響連接網路需要什麼設備 瀏覽:667
無線網路設置網速 瀏覽:38
哪種電話卡網路信號最好 瀏覽:703
滄州網路服務哪個好 瀏覽:961
網路列印機無線列印么區別 瀏覽:82
網路費賬單如何列印 瀏覽:713
蚌埠移動網路電視直播 瀏覽:558
海康網路模擬信號攝像頭 瀏覽:156
蘋果11系統升級141後沒有4G網路 瀏覽:442
網路徵婚途徑有哪些 瀏覽:62
網路線一圈是多少米 瀏覽:850
保定萬牛網路科技是做什麼 瀏覽:805
家居網路營銷推廣策略 瀏覽:441
圖片的網路線從哪裡看 瀏覽:936

友情鏈接