2015-07-02 72 views
2

查看我的keyspace目錄我看到我的大多數表格的幾個版本。我認爲這是因爲我在某些時候放棄了它們,並在我改進模式時重新創建了它們。Cassandra - 刪除表格和備份數據庫的舊版本

table1-b3441432142142sdf02328914104803190 
table1-ba234143018dssd810412asdfsf2498041 

這些創建的表名非常繁瑣。嘗試更改到其中一個目錄,而無需從終端窗口粘貼目錄名稱......痛苦。很容易輸錯某些東西。

那邊的說明放在一邊,我該如何判斷哪個目錄是最新版本的表格?我可以自動刪除舊版本嗎?我不清楚這些是否被認爲是快照,因爲每個目錄也可以包含快照。我在另一篇文章中看到你可以停止自動快照,但我不確定我想要那個。我寧願自動刪除目前沒有使用的表格(即:不是最新版本)。

我偶然發現了這種嘗試做備份。我意識到我被迫去到每個表目錄並複製出快照文件(有50個目錄,但不包括所有舊的表格版本),這似乎是一個糟糕的設計(也許我失去了一些東西??)。

我認爲我可以對整個密鑰空間做快照並獲取一個文件,或者至少將所有文件輸出到代表整個密鑰空間快照的單個目錄。至少知道當前版本是什麼是很好的,所以我可以抓取正確的文件並將它們卸載到某個地方。

DataStax Enterprise具有備份功能,但它只支持AWS,我正在使用Azure。

所以澄清:

  • 如何自動刪除舊錶版本,並知道這是 當前版本?
  • 如何備份最新版本的表格並將文件輸出到單一目錄,我可以卸載某處?我只有兩個節點,所以如果一個節點出現故障,僅僅依靠修復對我來說不是一個好的選擇。

回答

1

您可以通過查看系統密鑰空間並檢查cf_id字段來查看錶的活動版本。例如,以查看版本的表與表名「臨時」的「測試」密鑰空間,你可以這樣做:

cqlsh> SELECT cf_id FROM system.schema_columnfamilies WHERE keyspace_name='test' AND columnfamily_name='temp' allow filtering; 

cf_id 
-------------------------------------- 
d8ea9830-20e9-11e5-afc0-c381f961c62a 

據我所知,它是安全的刪除(RM -r )過期的表格版本目錄不再處於活動狀態。我想他們不會自動刪除它們,以便您可以在錯誤地刪除它們的情況下恢復數據。即使禁用了自動快照,我也不知道如何讓它們自動移除。

我不認爲有一個命令將所有快照文件寫入單個目錄。根據快照文檔,「快照完成後,如果需要,可以將備份文件移動到其他位置,或者可以將它們留在原地。」因此,應用程序開發人員應該如何處理歸檔快照文件。

+0

所以我必須運行每個表的查詢..根據返回的ID手動更改爲每個目錄,並將這些文件手動複製到某個文件夾以將其移動到另一個位置?因此,如果我有50個表,我必須運行50個查詢並更改目錄50次..並執行50個複製操作?必須有更好的方式,或者這只是一個可怕的設計。我希望有人希望恢復單個表,但這樣做來備份整個密鑰空間似乎是荒謬的。我想知道如果我耗盡節點,然後只是複製整個數據目錄,如果它能正確恢復。 – KingOfHypocrites

+0

您可能可以編寫一個腳本來清理舊的表目錄,如果這是您正常的工作流程,則可以使用另一個腳本將您的快照從集羣中複製出來。對於開源的Cassandra,我認爲備份的輕鬆並不是一個優先事項,因此您可能需要構建自己的幫助腳本。 –