redis的備份和還原

基於redis 6.2

Redis備份還原

redis支持rdb和aof兩種持久化方式. 默認只開啓了rdb

RDB快照

半持久化, 默認已開啓, 默認配置基本不需要修改.

#rdb默認的觸發持久化的條件
save 900 1
save 300 10
save 60 10000

#rdb快照的文件名
dbfilename dump.rdb
#rdb快照文件保存路徑
dir /www/server/redis/

直接備份文件 dump.rdb

獲取redis目錄(rdb文件存放在這): CONFIG GET dir

在redis命令下執行SAVE, 可立即將內存中的數據寫入dump.rdb:

redis-cli -h 127.0.0.1 -p 6379 -a 密碼 save

注意: SAVE命令會立即執行並等待返回結果, BGSAVE是異步的(不會返回執行結果)

還原

  • 停止redis服務

  • 複製備份文件dump.rdb到redis目錄

    複製後, 檢查一下文件的owner是否是redis

  • 啓動redis

如果rdb文件損壞, 會啓動失敗, 使用redis-check-rdb dump.rdb進行修復.

AOF(Append Only File)

全持久化, 比較耗IO, 需要手動開啓.

修改配置:

#開啓AOF
appendonly yes
  • 默認的AOF持久化的文件名是: appendonly.aof

  • 其他配置基本不用修改. 默認的刷新策略是everysec, 即每秒寫入一次, 宕機後最多丟失一秒的數據.

直接備份文件 appendonly.aof

建議備份前在redis命令下執行bgrewriteaof, 發送異步重寫指令, 可以減少日誌尺寸:

redis-cli -h 127.0.0.1 -p 6379 -a 密碼 bgrewriteaof

bgrewriteaof是異步命令, 需要使用 info persistence命令檢查aof_rewrite_in_progress是否爲0來確認是否已完整.

還原

  • 停止redis服務

  • 複製備份文件appendonly.aof到redis目錄

    複製後, 確認一下文件的owner是否是redis

  • 啓動redis

如果aof文件損壞, 會啓動失敗, 使用redis-check-aof --fix appendonly.aof進行修復.

注意: 經過測試, redis 6.2 版本的aof會記錄flushall命令(早前的4.x可能不會記錄)

同時開啓rdb和aof

在配置文件中同時開啓rdb和aof時, 會加載aof文件

如果要打開aof, 建議先使用命令開啓, 以同步數據, 然後再修改配置文件.

開啓aof:

127.0.0.1:6379> config set appendonly yes

開啓aof之後, 會自動更新持久化文件.

執行aof日誌重寫(異步的, 需要監控狀態):

127.0.0.1:6379> bgrewriteaof

檢查持久化狀態:

127.0.0.1:6379> info persistence

查看aof_rewrite_in_progress屬性的信息, 如果值爲0則表示當前沒有aof重寫進程, aof文件更新完成.

手動修改配置文件, 以確保redis重啓時開啓aof.

命令行操作

#開啓aof(運行時, 不會修改配置文件)
redis-cli -h 127.0.0.1 -p 6379 -a 123456 config set appendonly yes

#關閉rdb(運行時, 不會修改配置文件)
redis-cli -h 127.0.0.1 -p 6379 -a 123456 config set save ""

#在拷貝rdb文件前刷新:
redis-cli -h 127.0.0.1 -p 6379 -a 123456 save

批量導入模擬數據:

cat redis_batch.txt | redis-cli -h 127.0.0.1 -p 6379 -a 123456

redis_batch.txt中是redis命令的行, 比如:

set name aben
incr quantity
hset user:1 name aben age 18
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章