深入学习Redis(2):持久化 (8)

(3)如果AOF追加阻塞频繁发生,说明系统的硬盘负载太大;可以考虑更换IO速度更快的硬盘,或者通过IO监控分析工具对系统的IO负载进行分析,如iostat(系统级io)、iotop(io版的top)、pidstat等。

5. info命令与持久化

前面提到了一些通过info命令查看持久化相关状态的方法,下面来总结一下。

(1)info Persistence

执行结果如下:

深入学习Redis(2):持久化

其中比较重要的包括:

rdb_last_bgsave_status:上次bgsave 执行结果,可以用于发现bgsave错误

rdb_last_bgsave_time_sec:上次bgsave执行时间(单位是s),可以用于发现bgsave是否耗时过长

aof_enabled:AOF是否开启

aof_last_rewrite_time_sec: 上次文件重写执行时间(单位是s),可以用于发现文件重写是否耗时过长

aof_last_bgrewrite_status: 上次bgrewrite执行结果,可以用于发现bgrewrite错误

aof_buffer_length和aof_rewrite_buffer_length:aof缓存区大小和aof重写缓冲区大小

aof_delayed_fsync:AOF追加阻塞情况的统计

(2)info stats

其中与持久化关系较大的是:latest_fork_usec,代表上次fork耗时,可以参见前面的讨论。

六、总结

本文主要内容可以总结如下:

1、持久化在Redis高可用中的作用:数据备份,与主从复制相比强调的是由内存到硬盘的备份。

2、RDB持久化:将数据快照备份到硬盘;介绍了其触发条件(包括手动出发和自动触发)、执行流程、RDB文件等,特别需要注意的是文件保存操作由fork出的子进程来进行。

3、AOF持久化:将执行的写命令备份到硬盘(类似于MySQL的binlog),介绍了其开启方法、执行流程等,特别需要注意的是文件同步策略的选择(everysec)、文件重写的流程。

4、一些现实的问题:包括如何选择持久化策略,以及需要注意的fork阻塞、AOF追加阻塞等。

参考文献

《Redis开发与运维》

《Redis设计与实现》

《Redis实战》

https://mp.weixin.qq.com/s/fpupqLp-wjR8fQvYSQhVLg

https://blog.csdn.net/tonyxf121/article/details/8475603

https://www.m690.com/archives/380/

 

写这篇文章花费了我很多个小时,如果对你有帮助,就点个赞呗~

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzxgzs.html