天天看點

Redis之RDB與AOF 筆記

AOF定義:以日志的形式記錄每個操作,将Redis執行過的所有指令全部記錄下來(讀操作不記錄),隻許追加檔案但不可以修改檔案,Redis啟動時會讀取AOF配置檔案重構資料

換句話說,就是Redis重新開機就會根據日志内容從頭到尾執行一次來完成資料的恢複工作。

Tip:

  一.RDB與AOF同時開啟  預設先加載AOF的配置檔案

  二.相同資料集,AOF檔案要遠大于RDB檔案,恢複速度慢于RDB

  三.AOF運作效率慢于RDB,但是同步政策效率好,不同步效率和RDB相同

1.RDB持久化(以快照的方式) 政策(預設):

  save 900 1       (15分鐘變更一次)

  save 300 10     (5分鐘變更10次)

  save 60 10000  (1分鐘變更1萬次)

2.RDB預設配置檔案名稱:

  dbfilename dump.rdb

3.表示是否開啟AOF持久化:

  appendonly yes(預設no,關閉) 

4.AOF持久化配置檔案的名稱:

  appendfilename "appendonly.aof"

5.AOF持久化政策(預設每秒):

  appendfsync always (同步持久化,每次發生資料變更會被立即記錄到磁盤,性能差但資料完整性比較好)

  appendfsync everysec (異步操作,每秒記錄,如果一秒鐘内當機,有資料丢失)

  appendfsync no  (将緩存回寫的政策交給系統,linux 預設是30秒将緩沖區的資料回寫硬碟的)

6.AOF配置檔案損壞修複方法:

  進入redis安裝路徑 執行 redis-check-aof --fix AOF配置檔案名稱

7.AOF的Rewrite(重寫) :

  定義:AOF采用檔案追加的方式持久化資料,是以檔案會越來越大,為了避免這種情況發生,增加了重寫機制

          當AOF檔案的大小超過了配置所設定的阙值時,Redis就會啟動AOF檔案壓縮,隻保留可以恢複資料的最小指令集,可以使用指令bgrewriteaof

  原理:當AOF增長過大時,會fork出一條新的程序将檔案重寫(也是先寫臨時檔案最後rename),周遊新程序的記憶體資料,每條記錄有一條set語句。

       重寫AOF檔案并沒有操作舊的AOF檔案,而是将整個記憶體中的資料内容用指令的方式重寫了一個新的aof檔案(有點類似快照)

觸發機制:Redis會記錄上次重寫時的AOF檔案大小,預設配置時當AOF檔案大小是上次rewrite後大小的一倍且檔案大于64M時觸發

     auto-aof-rewrite-percentage 100  (一倍)

       auto-aof-rewrite-min-size 64mb

8.RDB與AOF的選擇:

  做備份:當資料量大,且對恢複速度有要求,并且資料的一緻性要求不高的話,可以隻使用RDB

  隻做緩存:不用開啟任何的持久化方式

  兩者都開啟的建議:RDB資料不實時,同時使用兩者時伺服器隻會找AOF檔案,可不可以隻使用AOF?建議不要,因為RDB更适合備份資料庫(AOF在不斷變化,不好備份),快速重新開機,而且不會又AOF可能潛在的BUG,留作萬一的手段。

          

9.優化:

  

Redis之RDB與AOF 筆記
Redis之RDB與AOF 筆記