RDB优点:
高性能的持久化实现:创建一个子进程来执行持久化,先将数据写入临时文件,持久化过程结束后,再用这个临时文件替换上次持久化好的文件;过程中主进程不做任何IO操作
比较适合大规模数据恢复,且对数据完整性要求不是非常高的场合
RDB的缺点:
意外宕机时,最后一次持久化的数据会丢失
使用RDB文件恢复数据
2.1 问题
要求如下:
启用RDB
设置存盘间隔为120秒 10个key改变存盘
备份RDB文件
删除数据
使用RDB文件恢复数据
2.2 步骤
实现此案例需要按照如下步骤进行。
步骤一:使用RDB文件恢复数据
RDB介绍:
Redis数据库文件,全称Reids DataBase
数据持久化方式之一
在指定时间间隔内,将内存中的数据集快照写入硬盘
术语叫Snapshot快照
恢复时,将快照文件直接读到内存里
相关配置参数
文件名
dbfilename “dump.rdb” 文件名
save “” 禁用RDB
数据从内存保存到硬盘的频率
save 900 1 900秒内且有1次修改
save 300 10 300秒内且有10次修改
save 60 10000 60秒内且有10000修改
[root@redisA ~]# redis-cli -h 192.168.4.51 -a 123456 shutdown
[root@redisA ~]# vim /etc/redis/6379.conf
dbfilename dump.rdb
# save "" //启用RDB,去掉#号为禁用RDB
save 120 10 //120秒内且有1次修改(满足三个条件中的任意一个都会保存)
save 300 10
save 60 10000
[root@redisA ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@redisA ~]# redis-cli -h 192.168.4.51 -a 123456
192.168.4.51:6379>
[root@redisA ~]# redis-cli -h 192.168.4.51 -a 123456
192.168.4.51:6379>
192.168.4.51:6379> set v1 k1
OK
192.168.4.51:6379> set v2 k1
OK
192.168.4.51:6379> set v3 k1
OK
192.168.4.51:6379> set v4 k1
OK
192.168.4.51:6379> set v45 k1
OK
192.168.4.51:6379> set v46 k1
OK
192.168.4.51:6379> set v7 k1
OK
192.168.4.51:6379> set v8 k1
OK
192.168.4.51:6379> set v9 k1
OK
192.168.4.51:6379> set v10 k1
OK
192.168.4.51:6379> keys *
1) "v2"
2) "v9"
3) "v10"
4) "v45"
5) "v4"
6) "v1"
7) "v46"
8) "v8"
9) "v7"
10) "v3"
192.168.4.51:6379>exit
备份数据
[root@redisA 6379]# redis-cli -h 192.168.4.51 -a 123456 shutdown //停止服务
[root@redisA ~]# cd /var/lib/redis/6379/
[root@redisA 6379]# ls
dump.rdb nodes-6351.conf
[root@redisA 6379]# cp dump.rdb dump.rdb.bak //备份dump.rdb,之后删除
删除数据
[root@redisA 6379]# rm -rf dump.rdb
[root@redisA 6379]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@redisA 6379]# ls
dump.rdb dump.rdb.bak nodes-6351.conf
[root@redisA 6379]# redis-cli -h 192.168.4.51 -a 123456
192.168.4.51:6379> keys * //已经没有数据
(empty list or set)
192.168.4.51:6379>
恢复数据
[root@redisA 6379]# redis-cli -h 192.168.4.51 -a 123456 shutdown
[root@redisA 6379]# mv dump.rdb.bak dump.rdb
mv: overwrite ‘dump.rdb’? y
[root@redisA 6379]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@redisA 6379]# redis-cli -h 192.168.4.51 -a 123456
192.168.4.51:6379> keys *
1) "v7"
2) "v46"
3) "v45"
4) "v8"
5) "v4"
6) "v2"
7) "v1"
8) "v3"
9) "v9"
10) "v10"
192.168.4.51:6379>