RDB與AOF孰優孰劣?

RDB 與 AOF

RDB 基於內存快照,有兩種方式 save 和 bgsave,前者會阻塞 redis 服務,後者是異步 fork 子進程不影響主進程提供服務。大部分情況,我們會通過配置時間間隔觸發 RDB 文件寫入。RDB 文件中保存的是 redis 內存中所有的數據一份快照。
優點是:
  • 相同的數據量下,rdb 文件要小於 aof 文件,且恢復速度要快於 aof
  • rdb 文件中是整個數據的完整備份快照,數據存儲緊湊即便不同版本的 redis,也能順利恢復
  • 整個 rdb 持久化,只需要 fork 一個子進程進行持久化即可,父進程依然可以提供服務,效率最大化
缺點是:
  • 容易丟失數據,即便配置了事件時間觸發備份,也至少丟失一秒數據
  • 如果數據量太大,fork 子進程的時候會阻塞毫秒級別時間
AOF 是基於命令操作日誌,每條更新命令都會被刷到緩存區,然後在特定的時間節點被寫入 aof 磁盤文件。
優點是:
  • 相較於 RDB,AOF 數據可靠性更強,最多丟失一秒數據
  • 數據庫容錯率變好,一些誤操作可以通過直接改 aof 文件進行回退
缺點是:
  • AOF 文件通常較大且恢復效率比不上 RDB,不適合做數據冷備份

  • 總的來說,AOF 策略會使數據穩定性更高,具有更完整的數據備份,RDB 恢復效率高適合做災難恢復,建議生產環境上兩者都開啓。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章