Redis 之 通过RDB文件进行恢复
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 之 通过RDB文件进行恢复相关的知识,希望对你有一定的参考价值。
一、背景我们知道Redis是一种NoSql数据库,常用来做缓存数据库,因为运行在内存中,不用每次再到数据库中去查询需要的数据,所以比普通的关系型数据库性能更优越,在内存中操作数据肯定比磁盘上性能是很大的提高。所用很多企业都拿redis来做缓存数据库。在内存中存储数据就会涉及到一个不可避免的问题,如果宕机或者机器受到物理损坏或者关机的时候,内存中的数据就会消失。但是当我们再次开启redis服务的时候,数据还是存在的。既然是数据在内存中存储,我们再次开机时候,内存又加载了我们机器出问题时候的数据。redis具体是怎么做到的,这就是我们今天所要说的redis持久化机制。
二、原理
redis持久化实现有两个方式RDB(Redis DataBase 默认开启)和AOF(Append Only File 默认关闭)都是通过来保存文件在磁盘中,在redis服务在启动时,在将数据读取到内存中。所以我们在重启开启服务时候,发现之前的数据还存在。
三、实现机制
rdb方式是通过在是定时间内将内存中的数据集快照(Snapshot)写入磁盘;在数据恢复时,再将快照中的信息读取到内存中。
四、优缺点
优势:适合大规模的数据恢复,对数据的完整性和一致性要求不高;
劣势:在一定的时间间隔内做备份,会丢失一部分数据,因为一般会丢失最后一次的保存记录,可以通过lastsave获取最后一次快照的时间查看。
查看最后一次写入磁盘的时间的命令:
10.3.152.78:6379> LASTSAVE
(integer) 1563805120 #Unix时间戳
备注:当我们同时开启两钟持久化方式,redis重启时候会优先载入aof文件来恢复数据,因为在一般情况写aof存储的文件数据比rdb形式存储的文件更加的完整。
五、恢复模拟
1、分别把两台redis服务器的redis服务停止。
2、把需要还原的rdb文件,复制到另外一台服务器上,查看当前存放位置路径
10.3.152.78:6379> config get dir
1) "dir"
2) "/var/lib/redis" #rdb文件存放路径,并保证没有aof文件存在,否则默认优先加载此文件
10.3.152.78:6379>
3、设置相应的权限与修改相同的文件(保证与当前的rdb文件名和权限一致,覆盖)
4、启动redis服务
5、用info命令查看,当前的数据数量是否与相符
以上是关于Redis 之 通过RDB文件进行恢复的主要内容,如果未能解决你的问题,请参考以下文章