2017-04-06 58 views
0

假設我們擁有包含以下節點的3節點羣集:node1,node2,node3。 有一天,我們爲整個集羣創建了快照,並將每個節點的快照表複製到外部備份服務器。如何在更改羣集中的節點數量之後恢復Cassandra shapshot

一段時間過去了,現在羣集已經增長了:而不是3個節點,我們有5個節點。除此之外,其中一個原始節點不再存在,因此集羣現在看起來如下所示:node1,node3,node4,node5,node6。

如何正確地將快照數據恢復到更改的羣集中? 我說得對,在上述情況下唯一的方法是使用sstableloader?

如果它是真的,如何啓動還原過程,以便將快照放置在未安裝Cassandra的備份服務器上?我需要在那裏安裝sstableloader還是我可以遠程啓動它?

sstableloader將以多快的速度恢復數據?

回答

0

你最好的選擇是基於以下改爲:

http://www.datastax.com/dev/blog/using-the-cassandra-bulk-loader-updated

總之的SSTable裝載機都知道集羣的拓撲到你正在推動數據。所以數據最終會在正確的節點上結束。

如果由於某種原因,將sstable轉移到節點可能更爲可行。你可能會把它們放到正確的文件夾中,然後運行重新加載或重新啓動......並在此之後進行清理,但與sstable加載程序相比,它不夠優雅。

+0

在我前面描述的情況下,節點的數量從創建快照的時刻開始改變。 那麼,將node2備份數據放置在node5上可以嗎?那麼nodetool清理會在所需節點之間傳播數據嗎? –

+0

沒有清理不會傳播它,清理只是放棄一切不是這個節點的東西。如果你想分散數據,理論上你必須放置每個節點的備份,然後運行清理。在你的情況下,我會使用sstable加載程序,它會將備份的數據流式傳輸到集羣中正確的節點。你可以使用複製清理組合來做到這一點,但它只是時間/資源密集型。 –

+0

如果可以在集羣中節點數量或複製數量隨時間變化的情況下執行,我寧願採用將快照放回數據文件夾的方式。 –

相關問題