Redis 持久化 RDB/AOF
一、持久化之 RDB
1、全稱 Reids DataBase:資料持久化方式之一,在指定時間間隔內,將記憶體中的資料集快照寫入硬碟。術語叫Snapshot 快照,恢復時,將快照檔案直接讀到記憶體裡。
2、相關配置引數 /etc/redis/6379.conf
檔名 – dbfilename “dump.rdb” // 檔名 – save “” // 禁用 RDB
• 資料從記憶體儲存到硬碟的頻率 – save 900 1 // 900 秒內且有 1 次修改存檔 – save 300 10 //300 秒內且有 10 次修改存檔 – save 60 10000 //60 秒內且有 10000 修改存檔
手動立刻存檔 – > save // 阻塞寫存檔 – > bgsave // 不阻塞寫存檔
壓縮 – rdbcompression yes | no
在儲存快照後,使用 crc16 演算法做資料校驗 – rdbchecksum yes|no
bgsave 出錯停止寫操作 , 對資料一致性要求不高設定為 no – stop-writes-on-bgsave-error yes|no
3、使用 RDB 檔案恢復資料
備份資料 備份 dump.rdb 檔案到其他位置 ~]# cp 資料庫目錄 /dump.rdb 備份目錄
恢復資料 把備份的 dump.rdb 檔案拷貝回資料庫目錄 , 重啟 redis 服務 ~]# cp 備份目錄/dump.rdb 資料庫目錄 / ~]# redis-server /etc/redis/6379.conf
4、RDB 優點 / 缺點 RDB 優點:持久化時, Redis 服務會建立一個子程序來進行持久化,會先將資料寫入到一個臨時檔案中,待持久化過程都結束了,再用這個臨時檔案替換上次持久化好的檔案;整個過程中主程序不做任何 IO 操作,這就確保了極高的效能。如果要程序大規模資料恢復,且對資料完整行要求不是非常高,使用 RDB 比 AOF 更高效。
RDB 的缺點:意外宕機,最後一次持久化的資料會丟失。
二、持久化之 AOF
1、AOF 介紹:只追加操作的檔案,Append Only File。 記錄 redis 服務所有寫操作。不斷的將新的寫操作,追加到檔案的末尾。使用 cat 命令可以檢視檔案內容。
2、相關配置引數: 檔名 – appendfilename “appendonly.aof” // 檔名 – appendonly yes // 啟用 aof ,預設 no AOF 檔案記錄,寫操作的三種方式 – appendfsync always // 有新的寫操作立即記錄,效能差,完整性好。 – appendfsync everysec // 每秒記錄一次,宕機時會丟失 1 秒的資料 – appendfsync no // 從不記錄
日誌重寫 ( 日誌檔案會不斷增大 ) ,何時會觸發日誌重寫? redis 會記錄上次重寫時 AOF 檔案的大小,預設配置是當 aof 檔案是上次 rewrite 後大小的 1 倍且檔案大於 64M 時觸發。 – auto-aof-rewrite-percentage 100 – auto-aof-rewrite-min-size 64mb
修復 AOF 檔案:把檔案恢復到最後一次的正確操作 [[email protected] 631]# redis-check-aof –fix appendonly.aof
3、使用 AOF 檔案恢復資料 備份資料:備份 dump.rdb 檔案到其他位置 ~]# cp 資料庫目錄 /appendonly.aof 備份目錄
恢復資料:把備份的 dump.rdb 檔案拷貝回資料庫目錄 , 重啟 redis 服務 ~]# cp 備份目錄 /appendonly.aof 資料庫目錄 / ~]# redis-server /etc/redid/6379.conf
4、AOF 優點 / 缺點 AOF優點:可以靈活的設定同步持久化 appendfsync alwayls 或非同步持久化 appendfsync everysec AOF缺點:AOF 檔案的體積通常會大於 RDB 檔案的體積。執行 fsync 策略時的速度可能會比 RDB 慢。