当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、启动后,再次确认数据是否已经恢复,发现已经恢复。
redis的安装就不细说了,相必都会,主要说一下redis的备份和恢复
具体操作:
[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 #查看redis的数据存储目录
1) "dir"
2) "/root"
127.0.0.1:6379>
[root@localhost redis-3.2.9]# redis-cli -a redis shutdown
[root@localhost redis-3.2.9]# vim redis.conf
把 appendonly yes 改为 appendonly no
之后把要备份的数据拷贝到redis的安装目录中,重启服务。
[root@localhost redis-3.2.9]# redis-server redis.conf
[root@localhost redis-3.2.9]# redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH redis
OK
127.0.0.1:6379> keys *
1) "TextBook_reportId_:5269"
2) "TextBook_reportId_:5264"
3) "TextBook_reportId_:5256"
可以获取到数据之后
这个时候要打开aof必须动态的打开,方法是进入客户端后,输入命令config set appendonly yes
127.0.0.1:6379> config set appendonly yes
OK
127.0.0.1:6379> config get appendonly
1) "appendonly"
2) "yes"
127.0.0.1:6379> quit
[root@localhost redis-3.2.9]# redis-cli -a redis shutdown
[root@localhost redis-3.2.9]# vim redis.conf
把 appendonly no 改为 appendonly yes
[root@localhost redis-3.2.9]# redis-server redis.conf 重启服务
[root@localhost redis-3.2.9]# redis-cli
127.0.0.1:6379> AUTH redis
OK
127.0.0.1:6379> keys *
1) "TextBook_reportId_:5229"
2) "TextBook_reportId_:5238"
3) "TextBook_Msg_5:"
到此redis的数据备份和恢复就搞定了
redis的兼容性,低版本的不兼容高版本的,高版本的可以兼容低版本的,但是最好还是同版本之间进行数据的迁移和备份