Redis

Redis RDB 會損壞嗎?

  • May 31, 2014

在 redis.io 站點中,它指出 RDB 不如 AOF 持久。這是否意味著如果在保存操作期間斷電,可能存在數據庫損壞和完全數據失去的可能性?

如果底層數據儲存出現問題,RDB 文件可能會損壞。Redis 包含一個實用程序 redis-check-dump 來驗證文件,您可以使用它來檢查新寫入的轉儲文件的一致性。

如果 RDB 在啟動時損壞,Redis 將無法啟動並報告一個有點神秘的錯誤。有一個拉取請求:

https://github.com/antirez/redis/pull/1744

使檢查程序自動執行,但尚未合併(尚未)。

轉儲文件是在後台執行緒中寫入的,這意味著它不能包含 100% 最新的密鑰空間副本。為此,您需要使用 AOF 文件並將其設置為在每次寫入後同步(這會影響性能)。

Redis 的架構允許您為此建構許多不同的解決方案。您可以使用“從不”fsync 在主伺服器上打開 AOF 寫入,然後創建兩個從伺服器,其中一個僅每 10 分鐘創建一次 RDB 文件,另一個使用 AOF 並使用“always”或“everysec”fsync。只要磁碟從未發生故障,這將為您在主伺服器上提供內置冗餘,但如果發生故障,您可以從從伺服器獲取 AOF 文件並使用它來恢復主伺服器。如果失敗,您可以轉到 RDB 從站,但在這種情況下,您可能會失去自最後 10 分鐘轉儲以來寫入的數據。

這種靈活性是 Redis 如此強大的部分原因:您可以根據要儲存的數據選擇要使用的冗餘級別。

或者,您可以使用託管的 Redis 服務,讓他們擔心細節。

引用自:https://serverfault.com/questions/569370