zookeeper數據遷移失敗求解答

原創:轉載請:http://my.oschina.net/u/1760714/blog/655124分佈式

 

經過查看從PAXOS到ZOOKEEPER分佈式一致性原理與實踐以及閱讀相關源碼,今天終於知道爲何會失敗。.net

科普zookeeper領導者選舉的過程:server

zookeeper進行領導者選舉,主要依賴zxid以及myid來定,當集羣裏有myid分別爲1,2,3臺機器,會先根據zxid來定(大的選爲leader),再根據myid來定(myid大的選爲leader)。 blog

緣由是:當我zk1中建立完,生成test節點,加入到test2,3,4集羣中,此集羣裏已經有leader,zk1一定成爲follower,同時leader會通知zk1刪除zxid大於zk2的zxid的值。因此zk1中沒有數據。get

 

 

這是個人操做步驟:源碼

  1. 啓動zk1test

  2. zk1裏建立以及獲取到了test節點集羣

     

  3. 啓動zk2,3,4原理

  4.  集羣連接 2,3,4zookeeper

  5. 修改zk1的zoo.cfg文件以及建立myid

  6. 重啓zk1.集羣 zk1,2,3,4

  7. 最後:原來zk1的test節點沒了

請問爲何會這樣,正確的步驟該怎麼弄

 

 

boss已幫解決:大體原理就是

 1. zk1單例開啓,建立節點test

2.zk2,3,4開啓,裏面的zoo.cfg包含server.1/2/3/4

3.zk1 修改zoo.cfg,包含server.1/2/3/4,建立dataDir下面的myid。重啓zk1.

4.啓動zk2,3,4,。

5.集羣1,2,3,4. 查看是否有test節點,我如今能獲得test節點,說明集羣中有了。

6.zk2,3,4的zoo.cfg都刪除server.1,而且重啓zk2,3,4.

7,關閉zk1,

8.集羣鏈接zk2,3,4,查看集羣是否有test節點,有表示數據遷移成功,我操做了一遍,能夠了。具體的命令過程看附件,我會上傳的

連接: http://download.csdn.net/detail/u014045774/9485148

相關文章
相關標籤/搜索