1. 程式人生 > 其它 >Redis 備份與恢復

Redis 備份與恢復

本文介紹 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 檢視)中。

配置 dirdbfilename 兩個引數可以分別指定快照檔案的儲存路徑和檔名。

也可以手動執行 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 允許同時開啟 AOFRDB

複製

修改配置檔案

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.rdbappendonly.aof

移動到啟動配置檔案中設定的 dir 目錄並啟動服務即可。

注意:

  • 當啟動配置檔案啟用 appendonly 時,redis 預設尋找 appendonly.aof 恢復資料,如果沒有 aof 檔案,則 redis 資料為空。
  • 當需要使用 rdb 檔案恢復資料時,啟動配置檔案需註釋掉 #appendonly yes 引數。