Linux中使用redis(五)持续化

目录

一、持久化

前言

1、AOF

1)AOF是什么

2) AOF持久化流程

3)特点:

4、 AOF默认不开启

5、 AOF和RDB同时开启,redis听谁的

6、 AOF启动修复恢复

7、 AOF同步频率设置

8、 Rewrite压缩

9、 优势

10、 劣势

11 、总结(Which one)

12、测试

2、RDB

1) RDB是什么

RDB配置

2) 备份是如何进行的

3)fork

4) dump.rdb文件

5) rdb的备份

6) RDB持久化的优势

7) RDB劣势

8)如何停止动态RDB

9) 特点:

10、总结:

11、测试

3、RDB和AOF总结:

4、RDB和AOF的区别


一、持久化

前言

Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能 !

RDB和[AOP]解决的问题

由于redist是内存型数据库,有时候可能出现redis挂掉而导致缓存丢失的问题,RDB 和 AOF 都是为了解决这个问题,也是redis官方提出的两种数据持久化方案

1、AOF

磁盘文件在虚拟机中:/var/lib/redis/6379/appendonlydir目录下,后缀名为.aof的文件,set的数据都在该文件里面

1)AOF是什么

以日志的形式来记录每个写操作(增量保存)将Redis执行过的所有写指令记录下来(读操作不记录), 只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

2) AOF持久化流程

磁盘文件在虚拟机中:/var/lib/redis/6379/appendonlydir目录下,后缀名为.aof的文件

(1)客户端的请求写命令会被append追加到AOF缓冲区内;

(2)AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作sync同步到磁盘的AOF文件中;

(3)AOF文件大小超过重写策略或手动重写时,会对AOF文件rewrite重写,压缩AOF文件容量;

(4)Redis服务重启时,会重新load加载AOF文件中的写操作达到数据恢复的目的;

3)特点:

1、所有的写操作都会记录到磁盘文件中

2、RDB与AOF可以同时开启,但恢复时只会使用AOF

3、AOF体量无限大,因为AOF只会append不会repace,所以恢复就会很慢

解决AOF体量无限大的问题:

1、hdfs:fsimage+edit.log让日志只记录增量合并的过程

2、4.0前:删除抵消的命令,合并重复的命令,最终是一个命令文件

3、4.0后:将老的数据RDB到AOF文件中,将增量的以指令的形式append到AOF

## 1、AOF
############################## APPEND ONLY MODE ###############################
#是否开启aof   
#appendonly yes
appendonly no # 默认是不开启aof模式的,默认是使用rdb方式持久化的,在大部分所有的情况下, rdb完全够用! 
# aof文件名字
appendfilename "appendonly.aof"
#写操作会触发IO,可以调整配置文件如下三种策略:下面7、aof同步频率设置详细讲解
# appendfsync always # 每次修改都会 sync。消耗性能 
# appendfsync no  # 不执行 sync,这个时候操作系统自己同步数据,速度最快!
appendfsync everysec # 每秒执行一次 sync,可能会丢失这1s的数据! 
​
​
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100 #写入百分比
auto-aof-rewrite-min-size 64mb#写入的文件最大值是多少,一般在实际工作中我们会将其设置为5gb左右!
aof-load-truncated yes
12345678910111213141516

4、 AOF默认不开启

可以在redis.conf中配置文件名称, 默认为 appendonly.aof

AOF文件的保存路径,同RDB的路径一致。/var/lib/redis/6379/appendonlydir

5、 AOF和RDB同时开启,redis听谁的

AOF和RDB同时开启,系统默认取AOF的数据(数据不会存在丢失)

6、 AOF启动修复恢复

我们可以使用redis-check-aof文件来进行修复!这个不能恢复全部数据,有毛病的

redis-check-aof --fix appendonly.aof  #修复appendonly.aof文件

1.AOF的备份机制和性能虽然和RDB不同, 但是备份和恢复的操作同RDB一样,都是拷贝备份文件,需要恢复时再拷贝到Redis工作目录下,启动系统即加载。

2.正常恢复

1、只需将备份的aof文件放在我们的redis启动目录即可,Redis启动的时候会自动检查appendonly6379.aof.1.incr.aof文件并恢复其中的数据!

2、查找文件位置的命令:

127.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/bin"  # 如果在这个目录下存在 appendonly6379.aof.1.incr.aof 文件,启动就会自动恢复其中的数据,把要恢复的文件复制到给目录下然后重写启动

修改默认的appendonly no,改为yes

将有数据的aof文件复制一份保存到对应目录(查看目录:config get dir)

恢复:重启redis然后重新加载

3.异常恢复

修改默认的appendonly no,改为yes

如遇到AOF文件损坏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值