2015-04-16 34 views
1

我在cassandra集羣中有4個節點。如果我將密鑰空間的複製因子設爲4,則從一個節點進行備份將保證備份整個數據。假設如果我將複製因子設置爲2或3,那麼採取一個節點的備份將不會備份整個數據,而只會備份其中存在的數據。例如,如果我有4個節點A,B,C,d和複製因子爲3,並假設該數據如下是分佈式的,如何從cassandra中的一個節點備份整個密鑰空間數據,而不考慮複製因素?

node A: 1-10,11-20,21-30 
node B: 11-20,21-30,31-40 
node C: 21-30,31-40,1-10 
node D: 31-40,1-10,11-20 

現在,如果取從節點A的備份和恢復對於一些數據其他集羣,那麼我只會得到1-10,11-20,21-30的記錄,但我會失去記錄31-40。這是什麼解決方案?無論複製因素如何,我​​們都無法從一個節點獲取整個數據的備份嗎?

回答

0

不幸的是,這個無解。通常,備份在所有節點上運行。

1

簡短的答案是否定的。至少自動備份是不行的。 你確實有另外兩個選項,但他們需要「額外勞動」:

  1. 創建RF = 1側密鑰空間和備份,在所有4個節點(無需自定義腳本,剛啓用快照)。這樣,您可以爲這些備份創建第二個存儲設置(將備份目錄掛載到fstab中)。您將有「每次寫入兩次寫入」,因此請使用批量插入。
  2. 儘管您的副本位置邏輯是正確的,但您的結論並非如此。你只需要支持任意兩個節點,因爲有4個節點和RF = 3,兩個節點的每個組合將具有整個範圍的密鑰。如果您決定添加更多節點,則必須注意。

如果您必須恢復數據,選項一將需要大量工作,因爲您需要按順序執行完整的鍵空間讀取找到丟失的鑰匙。

方案二將是不可逆的數據丟失的情況下更容易。你只需要對密鑰空間進行修復。

因爲我不知道你使用的情況下,我不能給你一個建議,但在大多數的故障情況卡桑德拉用最少的恢復很好本身沒有停機時間您的應用程序。

經驗法則是(使用RAID或者JBOD)在存儲系統上下注。

相關問題