rdb全量二進位制備份
在指定時間間隔內將記憶體的資料集快照寫入磁碟,生成的預設檔案是dump,rdb
優點:
1、rdb最大限度提高reds效能,父程序不需要參與磁碟io
2、rdb檔案緊湊,全量備份,使用與備份和災難恢復
3、恢復大資料集時比aof快
缺點:rdb在資料集很大時,fork操作會非常耗時
save指令:會阻塞當前的redis伺服器,在命令執行期間,redis不處理其他命令。直至備份完成
bgsave指令:fork建立子程序,備份過程由子程序執行,並且在備份同時可以響應客戶端請求
自動化觸發:透過save 命令設定觸發條件,例子 save m n 表示在m秒內有n次資料修改,自動觸發bgsave
主從架構:從伺服器同步資料時,會傳送sync執行同步操作,主伺服器會執行bgsave操作
配置資訊
#持久化檔名稱 dbfilename dump.rdb #持久化檔案儲存路徑 dir /usr/local/redis/data #持久化策略, M秒內有個n個key改動,執行快照 save 3600 1 save 300 100 save 60 10000 #匯出rdb資料庫檔案壓縮字串和物件,預設是yes,會浪費CPU但是節省空間 rdbcompression yes # 匯入時是否檢查 rdbchecksum yes
aof增量備份
追加的方式存入檔案中,重啟時會重新執行aof檔案以恢復資料,當機時,可以透過reedis-check-aof 方式檢查修復,不影響之前的資料
優點:
1、資料更加安全
2、當aof檔案太大時,能後臺自動重寫aof
3、aof易於理解和解析
缺點:
1、aof檔案比同級別的rdb檔案的等效大
2、恢復時,aof可能比rdb慢
核心原理
1、每次寫入命令會追加到aof_buf緩衝區
2、aof緩衝區根據對應的策略向硬碟做同步操作
3、高頻aof會影響效能,特別是每次刷盤操作時
同步方式
2、appendfsync everysec 每秒執行一次
3、appendfsync 不主動同步,由作業系統自動排程刷磁碟,效能最好但不安全
重寫機制
手動觸發:bgrewriteaof
自動觸發:auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 50mb 設定觸發rewrite的最小尺寸
配置資訊
# 是否開啟aof appendonly yes # 檔名稱 appendfilename "appendonly.aof" # 同步方式,每秒同步 appendfsync everysec # aof重寫期間是否同步 no-appendfsync-on-rewrite no # 重寫觸發配置 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 50mb # 載入aof時如果有錯如何處理 # yes表示如果aof尾部檔案出問題,寫log記錄並繼續執行。no表示提示寫入等待修復後寫 入 aof-load-truncated yes