如您所知,Cassandra集羣具有複製功能,以防止數據丟失,即使集羣中的某些節點關閉。但是,如果管理員意外刪除了一個包含大量數據的表,並且該命令已由集羣中的所有副本執行,這是否意味着您丟失了該表並且無法恢復該表?服務器停機時間短是否有什麼建議來應對這種災難?當出現故障時恢復cassandra集羣數據drop table
回答
從卡桑德拉docs:
auto_snapshot (默認值:true)啓用或禁用的快照是否密鑰空間截短或表的滴之前取得的數據的。爲防止 數據丟失,強烈建議使用默認設置。如果您將 設置爲false,則將丟失截斷或丟棄數據。
如果管理員已經刪除了所有節點中的數據並複製,那麼在沒有一致備份的情況下很難恢復數據。
也許考慮到cassandra中的刪除不會立即執行,您可以恢復數據。當你刪除數據時,cassandra用墓碑代替數據。墓碑然後可以傳播到錯過了初始刪除請求的副本。
參見http://wiki.apache.org/cassandra/DistributedDeletes
列標有墓碑存在一個配置的時間(由gc_grace_seconds值在列家族組中定義的),然後通過壓縮處理將被永久刪除之後的時間已經期滿。默認值是10天。
按照About Deletes中的說明,如果您關閉了一些節點,並等到壓縮成功並且數據完全從SSTables中刪除,然後再次打開節點,則數據可能再次出現。但是這隻會發生,如果你不在節點上進行定期維修操作。
我從來沒有嘗試過這個,它只是一個想法,讓我讀到cassandra文檔。
謝謝。我的問題包括在所有節點中複製刪除的情況。假設刪除還沒有傳播,我們怎麼知道哪個節點仍然保存着數據,即使我們知道,我們仍然需要等到數據恢復成功,這會造成很多經濟損失。 – lncnb91
- 1. 當整個cassandra集羣出現故障時會發生什麼
- 2. 當phpcassa出現羣集中少數cassandra服務器出現故障時
- 3. Cassandra集羣恢復
- 4. 羣集共享磁盤出現故障
- 5. 如何使用repmgr使用Postgresql羣集進行故障恢復?
- 6. 當節點出現故障時Cassandra響鈴狀態
- 7. Cassandra集羣的備份和恢復
- 8. 電源故障和Oracle數據恢復
- 9. Memcache羣集故障轉移複製
- 10. RabbitMQ集羣節點故障
- 11. 將數據庫恢復到新羣集
- 12. Robospice:當網絡出現故障時返回緩存的數據
- 13. 故障恢復在C#
- 14. cxf故障轉移恢復
- 15. 複數打印程序出現故障
- 16. H2數據庫集羣恢復
- 17. RDBMS上的EhCache和RDBMS出現故障時從磁盤溢出/恢復
- 18. 即使在任何節點出現故障時,是否可以從cassandra羣集中讀取
- 19. 分段故障數據集
- 20. Redis羣集:沒有自動故障轉移爲主故障
- 21. postgresql複製|當從服務器/恢復服務器出現故障時,應用程序會凍結
- 22. Cassandra因GC故障而無法修復
- 23. 使用Directory.Exists當網絡出現故障
- 24. RabbitMQ的集羣網絡故障
- 25. Couchbase羣集故障轉移架構
- 26. 集羣節點的libmemcached故障切換
- 27. 使用DiskVolumeInfo(羣集故障轉移API)
- 28. 使用故障轉移羣集
- 29. 羣集共享捲上的SQL Server 2008故障轉移羣集?
- 30. Cassandra集羣中修復時間對分區數量的影響
感謝您的回答。大量數據需要很長時間才能恢復嗎? – lncnb91
在恢復過程中沒有實際的數據被複制,所以速度非常快。但我也建議在此之後運行相當緩慢的'nodetool repair'任務,以確保恢復的數據完全一致。 – shutty