2013-02-04 14 views
4

它是微不足道的?我將使用Bitcask和文件備份(每個節點上的文件)。當戒指尺寸變化時移動Riak數據

比方說,我的初始環大小是256個16個節點。現在,如果我需要擴展到1024的環,我可以設置16個新的實例配置爲1024的環形大小,將舊集羣的備份文件複製到這16個新實例中並啓動Riak? Riak能夠拿起這些舊數據嗎?

我想不是,因爲一旦環大小改變,分區id和它們到單個節點的映射也可能改變。但是還有其他的方式嗎?在這種情況下(當環尺寸改變時)是否會進行饒舌備份?


我只是想知道,我已經做出的選擇是面向未來的足夠。很顯然,當需求急劇變化或者用戶羣迅速增加時,整個體系結構可能需要改變。但我希望能夠在某些時候做出這樣的改變(對環的大小) - 自然會涉及一些努力,但是 - 如果不是不可能的話。

回答

4

將羣集遷移到不同的環大小很難做到基於節點的文件備份(也就是說,如果您只是備份每個節點上的/ data目錄,就像在Backing Up Riak中建議的那樣)。因爲正如你所猜測的那樣,後端數據文件依賴於節點和分區到給定環大小的映射。

你應該怎麼做?

你必須使用整個集羣的「邏輯」備份,利用這兩個工具之一:

  1. riak-admin backup和恢復(這是實際可行的與 集羣不同指環尺寸的),或
  2. Riak Data Migrator

無論使用哪一種基本轉儲整個集羣的內容集中到一個位置(所以要小心不要運行的磁盤空間不足,很明顯)。然後您可以轉移,然後使用不同的環大小恢復到您的新羣集。

事情需要提防:

  • 只有做好非現場集羣備份。這意味着要麼關閉集羣,要麼至少確保在進行備份時舊集羣沒有發生新的寫入。否則,如果您開始備份但新的寫入仍在進行,則不能保證他們將其備份到備份的數據集中。

  • 確保在執行備份/恢復之前將app.config和自定義存儲桶設置轉移到新羣集。

希望這會有所幫助。所以,這不是微不足道的(這意味着,它需要一段時間,並且需要大量的磁盤空間,但是,無論何時傳輸大量數據都是如此),但它也不是非常複雜。

+0

權,所以答案似乎是建立一個副本羣,並將它作爲兩個熱插拔選項,並從它備份不太經常到文件。昂貴(就實例而言),但我沒有看到另一個合理的選擇。謝謝你的細節! –

+1

如何獲得副本羣集的工作?除了昂貴的riak-enterprise複製之外,還有其他方法嗎? –

1

我知道這是一個老問題,但與Riak 2。X現在可以動態地調整環,而無需關閉羣集:

riak-admin cluster resize-ring <new_size> 

riak-admin cluster plan 

riak-admin cluster commit 

注意:一了Riak環的大小應始終是2n個整數,例如16,32,64,等

http://docs.basho.com/riak/latest/ops/advanced/ring-resizing/