前言:
RDB和AOF同时开启,默认AOF
两个配置都在redis.conf里面
数据恢复方式都是把备份文件复制到配置默认路径下,然后重启redis
一、RDB持久化
- RDB简单说明
在指定的时间间隔内将内存中的数据快照写入磁盘,也就是常说的Snapshot快照,它恢复是是将快照文件直接读取到内存里 - 备份持久化流程
Redis会创建(fork)一个子进程
来进行持久化,把数据写入到一个临时文件夹
里面,等持久化过程结束了,再用这个临时文件替换上次持久化的文件
。缺点就是最后一次持久化后的数据可能会丢失。 - RDB配置文件说明
- 打开redis.conf文件
- 大概在202行,找到SNAPSHOTTING,下面就是RDB的配置内容
################################ SNAPSHOTTING ################################
# 多长数据内,数据发生几次变化就会保存
# 例如save 20 2,20秒内,key被操作2次就会进行写操作
save 20 2
# 当Redis无法写入磁盘,就会关闭写操作(比如磁盘满了)
stop-writes-on-bgsave-error yes
# 创建快照时会压缩文件,但会消耗CPU
rdbcompression yes
# 检查文件的完整性,但会消耗10%的性能
rdbchecksum yes
# 备份持久化的默认名字
dbfilename dump.rdb
# RDB文件的存放路径,./为启动文件目录下
dir ./
- RDB的具体命令操作
-
启动Redis
-
在配置文件redis.conf里面加入
save 20 2
-
启动redis客户端redis-cli,并操作两次
-
- RDB备份
Redis启动后,会自动读取dump.rdb文件,所以把备份的文件给复制回配置的默认路径下就可以了
1.和redis.conf里面的配置相同名字
2.放的目录也要和配置里面的目录相同
文件备份可以用shell脚本的方式
二、AOF持久化
- AOF简单说明
以日志的形式来记录每一个写操作,将Redis执行过的所以指令全 部记录下来(读操作不记录),只许追加文件但不可以改写文件,redis重新启动后就会重构数据,就是把日志文件里面的指令从前往后执行一遍。 - AOF持久化流程
- 客户端的写命令会被append追加到AOF缓冲区内;
- AOF缓冲区根据AOF持久化策略【always,everysec,no】将操作sync同步到磁盘的AOF文件中;
- AOF文件大写超过重写策略或手动重写时,会对AOF文件rewrite重写,压缩AOF文件容量;
- AOF配置文件说明
大概在700行,或者用斜杠/
问号?
来搜索
# 开启AOF持久化
appendonly yes
# 文件的默认名字
appendfilename "appendonly.aof"
# 文件生成路径和RDB一样
#下面参数分别为:每次写入、每秒写入,不主动同步写入
appendfsync [always,everysec,no]
- AOF异常恢复
如果AOF文件损坏,则通过redis-check-aof --fix appendonly.aof
可执行命令文件进行恢复。
redis-check-aof --fix appendonly.aof
- Rewrite压缩
AOF采用文件追加方式,文件会越来越大,超过阈值就会重写压缩(把命令压缩,变的简短,且数据结果不变)
这个压缩原理可以细看其他文章或视频