只在單台redis恢復,未使用集群。
注意3個配置參數:
appendonly no
dbfilename dump.rdb
dir ./data
appendonly 設置成no,redis啟動時會把/var/lib/redis 目錄下的dump.rdb 中的數據恢復。dir 和dbfilename 都可以設置。我測試時appendonly 設置成yes 時候不會將dump.rdb文件中的數據恢復。
測試如下:
[root@iZbp143t3oxhfc3ar7jey0Z redis-4.0.12]# redis-cli 127.0.0.1:6379> keys * 1) "user" 127.0.0.1:6379> CONFIG GET dir 1) "dir" 2) "/root/redis-4.0.12/data" 127.0.0.1:6379> set k1 11 OK 127.0.0.1:6379> set k2 11 OK 127.0.0.1:6379> set k3 11 OK 127.0.0.1:6379> set k4 11 OK 127.0.0.1:6379> set k5 11 OK 127.0.0.1:6379> set k6 11 OK 127.0.0.1:6379> set k7 11 OK 127.0.0.1:6379> set k8 11 OK 127.0.0.1:6379> set k9 11 OK 127.0.0.1:6379> set k10 11 OK
連續set10個,就會產生備份
[root@iZbp143t3oxhfc3ar7jey0Z data]# ll total 16 -rw-r--r-- 1 root root 168 Mar 21 14:38 dump.rdb -rw-r--r-- 1 root root 9223 Mar 21 14:38 redis.log [root@iZbp143t3oxhfc3ar7jey0Z data]# mv dump.rdb dump.rdb.bak [root@iZbp143t3oxhfc3ar7jey0Z data]# ll total 16 -rw-r--r-- 1 root root 168 Mar 21 14:38 dump.rdb.bak -rw-r--r-- 1 root root 9223 Mar 21 14:38 redis.log
接着清空整個數據
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> exit
[root@iZbp143t3oxhfc3ar7jey0Z data]# ll total 20 -rw-r--r-- 1 root root 93 Mar 21 14:40 dump.rdb -rw-r--r-- 1 root root 168 Mar 21 14:38 dump.rdb.bak -rw-r--r-- 1 root root 9270 Mar 21 14:40 redis.log
也會產生一個新的rdb,在重新啟動redis
[root@iZbp143t3oxhfc3ar7jey0Z redis-4.0.12]# redis-cli shutdown [root@iZbp143t3oxhfc3ar7jey0Z redis-4.0.12]# redis-server redis.conf [root@iZbp143t3oxhfc3ar7jey0Z redis-4.0.12]# lsof -i:6379 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME redis-ser 18150 root 6u IPv6 534722 0t0 TCP *:6379 (LISTEN) redis-ser 18150 root 7u IPv4 534723 0t0 TCP *:6379 (LISTEN) [root@iZbp143t3oxhfc3ar7jey0Z redis-4.0.12]# redis-cli 127.0.0.1:6379> keys * (empty list or set) 127.0.0.1:6379> exit
發現沒有數據,是清空后有一個空的備份文件
[root@iZbp143t3oxhfc3ar7jey0Z data]# ll total 20 -rw-r--r-- 1 root root 93 Mar 21 14:41 dump.rdb -rw-r--r-- 1 root root 168 Mar 21 14:38 dump.rdb.bak -rw-r--r-- 1 root root 12281 Mar 21 14:41 redis.log [root@iZbp143t3oxhfc3ar7jey0Z data]# rm -rf dump.rdb [root@iZbp143t3oxhfc3ar7jey0Z data]# mv dump.rdb.bak dump.rdb [root@iZbp143t3oxhfc3ar7jey0Z data]# ll total 16 -rw-r--r-- 1 root root 168 Mar 21 14:38 dump.rdb -rw-r--r-- 1 root root 12281 Mar 21 14:41 redis.log [root@iZbp143t3oxhfc3ar7jey0Z data]#
[root@iZbp143t3oxhfc3ar7jey0Z redis-4.0.12]# redis-cli shutdown [root@iZbp143t3oxhfc3ar7jey0Z redis-4.0.12]# redis-server redis.conf [root@iZbp143t3oxhfc3ar7jey0Z redis-4.0.12]# redis-cli 127.0.0.1:6379> keys * 1) "k10" 2) "k3" 3) "k4" 4) "k2" 5) "k5" 6) "k6" 7) "k1" 8) "k9" 9) "user" 10) "k7" 11) "k8" 127.0.0.1:6379>
把之前產生的rdb文件改名,重新啟動,發現就有數據了。