1. 程式人生 > >redis資料備份

redis資料備份

RDB持久化方式 RDB持久化把當前程序資料生成快照(.rdb)檔案儲存到硬碟的過程,有手動觸發和自動觸發 手動觸發有save和bgsave兩命令 save命令:阻塞當前Redis,直到RDB持久化過程完成為止,若記憶體例項比較大會造成長時間阻塞,線上環境不建議用它 bgsave命令:redis程序執行fork操作建立子執行緒,由子執行緒完成持久化,阻塞時間很短(微秒級),是save的優化,在執行redis-cli shutdown關閉redis服務時,如果沒有開啟AOF持久化,自動執行bgsave; 命令:config set dir /usr/local //設定rdb檔案儲存路徑 備份:bgsave

//將dump.rdb儲存到usr/local下 恢復:將dump.rdb放到redis安裝目錄與redis.conf同級目錄,重啟redis即可 優點:1,壓縮後的二進位制文,適用於備份、全量複製,用於災難恢復 2,載入RDB恢復資料遠快於AOF方式 缺點:1,無法做到實時持久化,每次都要建立子程序,頻繁操作成本過高 2,儲存後的二進位制檔案,存在老版本不相容新版本rdb檔案的問題 AOF持久化 針對RDB不適合實時持久化,redis提供了AOF持久化方式來解決 開啟:redis.conf設定:appendonly yes (預設不開啟,為no) 預設檔名:appendfilename “appendonly.aof” 流程說明: 1,所有的寫入命令(set hset)會append追加到aof_buf緩衝區中 2,AOF緩衝區向硬碟做sync同步 3,隨著AOF檔案越來越大,需定期對AOF檔案rewrite重寫,達到壓縮 4,當redis服務重啟,可load載入AOF檔案進行恢復 命令寫入(append), 檔案同步(sync), 檔案重寫(rewrite), 重啟載入(load) appendonly yes //啟用aof持久化方式

appendfsync always //每收到寫命令就立即強制寫入磁碟,最慢的,但是保證完全的持久化,不推薦使用

appendfsync everysec //每秒強制寫入磁碟一次,效能和持久化方面做了折中,推薦

appendfsync no //完全依賴os,效能最好,持久化沒保證(作業系統自身的同步)

no-appendfsync-on-rewrite yes //正在匯出rdb快照的過程中,要不要停止同步aof auto-aof-rewrite-percentage 100 //aof檔案大小比起上次重寫時的大小,增長率100%時,重寫 auto-aof-rewrite-min-size 64mb //aof檔案,至少超過64M時,重寫

  1. 設定appendonly yes;
  2. 將appendonly.aof放到dir引數指定的目錄;
  3. 啟動Redis,Redis會自動載入appendonly.aof檔案。 1,當AOF和RDB檔案同時存在時,優先載入 2,若關閉了AOF,載入RDB檔案 3,載入AOF/RDB成功,redis重啟成功 4,AOF/RDB存在錯誤,啟動失敗列印錯誤資訊