redis 備份和恢復
版本:4.0.14
持久化:RDB+AOF
RDB相關引數:
dbfilename dump.rdb dir /redis/data
AOF相關引數:
appendonly yes appendfilename appendonly.aof appendfsync everysec auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb
生成測試資料
127.0.0.1:6379> set name cjc OK 127.0.0.1:6379> set xxx 123 OK 127.0.0.1:6379> set ccc www OK 127.0.0.1:6379> keys * 1) "name" 2) "ccc" 3) "xxx"
備份資料庫
[redis@cjcos02 data]$ ls appendonly.aof dump.rdb [redis@cjcos02 data]$ cp * ../bak/ [redis@cjcos02 data]$ ls -lrth ../bak/ total 8.0K -rw-rw-r-- 1 redis redis 130 Dec 5 09:52 dump.rdb -rw-r--r-- 1 redis redis 259 Dec 5 09:52 appendonly.aof
模擬誤刪除key
127.0.0.1:6379> del key xxx (integer) 1 127.0.0.1:6379> keys * 1) "name" 2) "ccc"
恢復1:
透過rdb備份進行恢復
停庫
127.0.0.1:6379> shutdown
將dump.rdb備份還原
[redis@cjcos02 data]$ cp ../bak/dump.rdb .
啟動
[redis@cjcos02 conf]$ redis-server redis.conf
資料沒有恢復,因為aof優先順序高於rdb,啟動資料庫時優先載入aof檔案
[redis@cjcos02 conf]$ redis-cli 127.0.0.1:6379> keys * 1) "ccc" 2) "name"
恢復2:
透過aof進行恢復
停庫
127.0.0.1:6379> shutdown
將aof備份還原
[redis@cjcos02 data]$ cp ../bak/appendonly.aof .
啟動
[redis@cjcos02 conf]$ redis-server redis.conf
資料恢復成功
[redis@cjcos02 conf]$ redis-server redis.conf [redis@cjcos02 conf]$ redis-cli 127.0.0.1:6379> keys * 1) "name" 2) "ccc" 3) "xxx"
如何強制優先以rdb檔案載入?
1.破壞當前aof檔案
停庫
127.0.0.1:6379> shutdown
重新命名
[redis@cjcos02 data]$ mv appendonly.aof appendonly.aof_bak
啟庫,生成了一個空的aof檔案
[redis@cjcos02 conf]$ redis-server redis.conf [redis@cjcos02 data]$ ls -lrth total 8.0K -rw-r--r-- 1 redis redis 259 Dec 5 09:57 appendonly.aof_bak -rw-rw-r-- 1 redis redis 124 Dec 5 10:00 dump.rdb -rw-r--r-- 1 redis redis 0 Dec 5 10:01 appendonly.aof
資料全部丟失,原因是資料庫載入了新生成的aof空檔案
[redis@cjcos02 conf]$ redis-cli 127.0.0.1:6379> keys * (empty list or set)
並且當前的dump.rdb資料也會根據空的aof檔案進行更新,導致資料全部丟失
2.關閉aof
先恢復剛才丟失的資料
[redis@cjcos02 data]$ cp ../bak/dump.rdb .
停庫
127.0.0.1:6379> shutdown
關閉aof
[redis@cjcos02 data]$ vi ../conf/redis.conf appendonly no
啟庫
[redis@cjcos02 conf]$ redis-server redis.conf [redis@cjcos02 conf]$ redis-cli 127.0.0.1:6379> keys * 1) "fsd" 2) "age" 3) "name" 4) "xx"
總結:
1.redis資料持久化有rdb和aof,因為aof資料更新一些,所以如果rdb和aof都開啟了,啟動redis優先載入aof檔案。 2.備份時可以將rdb和aof都備份走。 3.如果rdb和aof都開啟了,啟動時想以rdb載入redis,千萬不能採用刪除或重新命名aof的方式, 熟悉oracle的都知道,引數檔案優先載入spfile,如果希望優先載入pfile,可以重新命名spfile, 但是在redis裡千萬不能這麼搞,如果這麼操作,redis啟動後會生成一個空的新aof檔案,並載入到redis裡,並以新的aof檔案更新rdb檔案,最終導致資料丟失。 正確的方式是透過引數關閉aof。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2926666/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 備份和恢復redisRedis
- redis備份恢復Redis
- redis備份和恢復的方式Redis
- windwos server 路由備份和恢復 路由表備份和恢復Server路由
- Mysql備份和恢復MySql
- Oracle 備份和恢復Oracle
- Backup And Recovery User's Guide-備份和恢復概覽-備份和恢復介紹-備份和恢復的目的GUIIDE
- Redis的資料備份與恢復Redis
- SqlServer備份和恢復(二)SQLServer
- SqlServer 備份和恢復(一)SQLServer
- 【MySQL】MySQL備份和恢復MySql
- MySQL 備份和恢復 一MySql
- oracle冷備份、恢復和異機恢復Oracle
- 【備份恢復】從備份恢復資料庫資料庫
- 【管理篇備份恢復】備份恢復基礎
- Oracle備份恢復之熱備份恢復及異機恢復Oracle
- ORACLE備份和恢復 - 邏輯備份 exp/impOracle
- Oracle 備份和恢復介紹Oracle
- 【MySql】innobackupex增量備份和恢復MySql
- 【MySql】innobackupex 增量備份和恢復MySql
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- 備份與恢復--利用備份的控制檔案恢復
- Mysql備份恢復MySql
- Postgresql 備份恢復SQL
- mysql 備份恢復MySql
- 備份與恢復:polardb資料庫備份與恢復資料庫
- 【備份恢復】Oracle 資料備份與恢復微實踐Oracle
- MySQL備份和恢復方法彙總MySql
- MySQL日誌管理,備份和恢復MySql
- MySQL備份和恢復工具圖譜MySql
- CUUG筆記--oracle備份和恢復筆記Oracle
- oracle備份和恢復策略簡介Oracle
- mysqldump 備份單張表和恢復MySql
- Oracle備份和恢復工具介紹Oracle
- Oracle 9i備份和恢復Oracle
- 控制檔案的備份和恢復
- 備份和恢復postgreSQL資料庫SQL資料庫
- 【Mysql】xtrabackup 備份和恢復測試MySql