Redis持久化RDB简介及简单数据恢复案例

来源:互联网 发布:浴霸灯哪个牌子好 知乎 编辑:程序博客网 时间:2024/06/06 08:40

RDBRedis DataBase:

简介:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话将的Snapshot快照,它恢复时是将快照文件直接读到内存里;

是什么?

Fork

RDB保存的是dump.rdb文件


配置的位置:(SNAPSHOTTING

简单说一下上面图片中配置的含义:满足下列任意一条均会生成dump.rdb快照文件进行数据的备份

save 900 1      900秒内修改了1次库

save 300 10       300秒内修改了10次库

save 60 10000  60秒内修改了10000次库

 

如何触发RDB快照:

---配置文件中默认的快照配置;

---命令save或者是bgsavesave时不再往数据库灌输数据,bgsave时可以继续存储数据);

---执行flushall命令,也会产生dump.rdb文件,但里面时空的,无意义.

如何恢复?

---将备份文件(dump.rdb)移动到redis安装目录并启动服务即可;

---CONFIG GET dir获取目录


下面是一个简单的恢复数据的案列:

首先在redis.conf文件中的SNAPSHOTTING中把save300 10 修改成save 120 10,即120秒内修改库10次就会生成dump.rdb快照文件。


Linux/usr/local/bin目录下,当前目录结构如下:

可以看到当前目录不存在dump.rdb文件,然后启动redis,并进入redis命令: 

 

当前数据库里没有任何值:

然后在120秒内往库里插入10条以上的数据:

退出redis命令行,120秒后,查看当前目录,发现多了dump.rdb文件:

dump.rdb文件进行备份:

再次进入redis命令行,清空所有的数据,关闭redis服务,并退出:

将之前备份好的dump_new.rdb文件重新覆盖掉dump.rdb文件,重新启动redis服务,输入keys * 命令,发现数据已经恢复:

优势:

---适合大规模的数据恢复;

---对数据完整性和一致性要求不高。

劣势:

---在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改;

---Fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需求考虑

如何停止?

动态所有停止RDB保存规则的方法:redis-cli config set save ""

小结:

原创粉丝点击