当redis宕机后,导致当前数据丢失。需要拿最新备份数据恢复到redis,如果rdb和aof都打开的情况下,要注意一下几点。
1、拷贝dump.rdb文件到redis 数据文件夹下
2、启动redis,此时如果redis同时开启了aof生成策略,redis会先加载aof,如果没有则生成一个aof
3、此时如果get key获取rdb中的备份数据会发现并没有获取到,这是由于redis启动时,基于新的内存重新生成了一个新的rdb文件,覆盖了备份的rdb文件
4、遇到这种情况应该先把aof生成策略先关闭,即把redis.conf文件中的appendonly 改为 no,然后重启redis
5、此时发现可以获取备份中的数据了,确认数据恢复后,这个时候要打开aof必须动态的打开,方法是进入客户端后,输入命令config set appendonly yes
6、确认设置是否成功,config get appendonly,返回yes ,说明已经设置成功,在此确认数据是否恢复,如果已经恢复,再次停止redis
7、然后修改配置文件,把redis.conf文件中的appendonly 改为yes,然后重启redis.
8、启动后,再次确认数据是否已经恢复,发现已经恢复。
具体操作:
[root@localhost ~]# cd /usr/local/redis-3.2.9/
[root@localhost redis-3.2.9]# redis-cli
127.0.0.1:6379> AUTH redis
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> config get dir
1) "dir"
2) "/root"
127.0.0.1:6379> save 保存数据
[root@localhost redis-3.2.9]# redis-cli -a redis shutdown
Fetching: redis-4.0.1.gem (100%)
Successfully installed redis-4.0.1
Parsing documentation for redis-4.0.1
Installing ri documentation for redis-4.0.1
Done installing documentation for redis after 1 seconds
1 gem installed
[root@localhost ~]# gem install redis-dump
Fetching: yajl-ruby-1.3.1.gem (100%)
Building native extensions. This could take a while...
Successfully installed yajl-ruby-1.3.1
Fetching: uri-redis-0.4.2.gem (100%)
Successfully installed uri-redis-0.4.2
Fetching: drydock-0.6.9.gem (100%)
Successfully installed drydock-0.6.9
Fetching: redis-dump-0.4.0.gem (100%)
Successfully installed redis-dump-0.4.0
Parsing documentation for drydock-0.6.9
Installing ri documentation for drydock-0.6.9
Parsing documentation for redis-dump-0.4.0
Installing ri documentation for redis-dump-0.4.0
Parsing documentation for uri-redis-0.4.2
Installing ri documentation for uri-redis-0.4.2
Parsing documentation for yajl-ruby-1.3.1
Installing ri documentation for yajl-ruby-1.3.1
Done installing documentation for drydock, redis-dump, uri-redis, yajl-ruby after 0 seconds
4 gems installed