Redis 備份與恢復
阿新 • • 發佈:2022-04-29
本文介紹 Redis 持久化。
RDB
該方式為預設方式。
RDB
方式的持久化是通過快照(snapshotting)完成的,當符合一定條件時 Redis 會自動將記憶體中的所有資料進行快照並存儲在硬碟上。進行快照的條件可以由使用者在配置檔案中自定義,由兩個引數構成:時間
和 改動的鍵的個數
。當在指定的時間內被更改的鍵的個數大於指定的數值時就會進行快照。配置檔案中已經預置了3個條件:
save 900 1 # 900秒內有至少1個鍵被更改則進行快照
save 300 10 # 300秒內有至少10個鍵被更改則進行快照
save 60 10000 # 60秒內有至少10000個鍵被更改則進行快照
可以存在多個條件,條件之間是「或」的關係,只要滿足其中一個條件,就會進行快照。如果想要禁用自動快照,只需要將所有的 save
Redis 預設會將快照檔案儲存在當前目錄(可以自定義,在客戶端使用 CONFIG GET dir
檢視)的 dump.rdb
檔案(可以自定義,在客戶端使用 CONFIG GET dbfilename
檢視)中。
配置 dir
和 dbfilename
兩個引數可以分別指定快照檔案的儲存路徑和檔名。
也可以手動執行 SAVE
命令
redis 127.0.0.1:6379> SAVE # 該命令將在 redis 備份目錄中建立dump.rdb檔案。
AOF
append only file
appendonly yes appendfilename appendonly.aof # 當目前的AOF檔案大小超過上一次重寫時的AOF檔案大小的百分之多少時會再次進行重寫,如果之前沒有重寫過,則以啟動時的AOF檔案大小為依據 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb # 允許重寫的最小AOF檔案大小 # appendfsync always # 每次執行寫入都會執行同步,最安全也最慢 appendfsync everysec # 每秒執行一次同步操作 # appendfsync no # 不主動進行同步操作,而是完全交由作業系統來做(即每30秒一次),最快也最不安全
Redis 允許同時開啟 AOF
和 RDB
。
複製
修改配置檔案
slaveof master-ip master-port
啟動引數
--slaveof master-ip master port
$ redis-server --port 6380 --slaveof 127.0.0.1 6379
命令
SLAVEOF master-ip master-port
redis>SLAVEOF 127.0.0.1 6379
SLAVEOF NO ONE
可以使當前資料庫停止接收其他資料庫的同步,轉成主資料庫
恢復
如果需要恢復資料,只需將備份檔案 dump.rdb
或 appendonly.aof
dir
目錄並啟動服務即可。
注意:
- 當啟動配置檔案啟用
appendonly
時,redis 預設尋找appendonly.aof
恢復資料,如果沒有aof
檔案,則redis
資料為空。 - 當需要使用
rdb
檔案恢復資料時,啟動配置檔案需註釋掉#appendonly yes
引數。