資料備份的原因:
磁盤故障, 節點失效, 諸如此類的問題都可能讓你的資料消失不見, 不進行備份是非常危險的。
備份資料的方式:
Redis 對于資料備份是非常友好的, 因為你可以在伺服器運作的時候對 RDB 檔案進行複制: RDB 檔案一旦被建立, 就不會進行任何修改。 當伺服器要建立一個新的 RDB 檔案時, 它先将檔案的内容儲存在一個臨時檔案裡面, 當臨時檔案寫入完畢時, 程式才使用 rename(2) 原子地用臨時檔案替換原來的 RDB 檔案。
這也就是說, 無論何時, 複制 RDB 檔案都是絕對安全的。
容災備份:
Redis 的容災備份基本上就是對資料進行備份, 并将這些備份傳送到多個不同的外部資料中心。容災備份可以在 Redis 運作并産生快照的主資料中心發生嚴重的問題時, 仍然讓資料處于安全狀态。
因為很多 Redis 使用者都是創業者, 他們沒有大把大把的錢可以浪費, 是以下面介紹的都是一些實用又便宜的容災備份方法:
-
Amazon S3 ,以及其他類似 S3 的服務,是一個建構災難備份系統的好地方。 最簡單的方法就是将你的每小時或者每日 RDB
備份加密并傳送到 S3 。 對資料的加密可以通過 gpg -c 指令來完成(對稱加密模式)。
記得把你的密碼放到幾個不同的、安全的地方去(比如你可以把密碼複制給你組織裡最重要的人物)。
同時使用多個儲存服務來儲存資料檔案,可以提升資料的安全性。
-
傳送快照可以使用 SCP 來完成(SSH 的元件)。 以下是簡單并且安全的傳送方法: 買一個離你的資料中心非常遠的 VPS , 裝上
SSH , 建立一個無密碼的 SSH 用戶端 key , 并将這個 key 添加到 VPS 的 authorized_keys 檔案中,
這樣就可以向這個 VPS 傳送快照備份檔案了。 為了達到最好的資料安全性,至少要從兩個不同的提供商那裡各購買一個 VPS
來進行資料容災備份。
-
需要注意的是, 這類容災系統如果沒有小心地進行處理的話, 是很容易失效的。最低限度下, 你應該在檔案傳送完畢之後,
檢查所傳送備份檔案的體積和原始快照檔案的體積是否相同。 如果你使用的是 VPS , 那麼還可以通過比對檔案的 SHA1
校驗和來确認檔案是否傳送完整。
另外, 你還需要一個獨立的警報系統, 讓它在負責傳送備份檔案的傳送器(transfer)失靈時通知你。