(3)如果AOF追加阻塞频繁发生,说明系统的硬盘负载太大;可以考虑更换IO速度更快的硬盘,或者通过IO监控分析工具对系统的IO负载进行分析,如iostat(系统级io)、iotop(io版的top)、pidstat等。
5. info命令与持久化前面提到了一些通过info命令查看持久化相关状态的方法,下面来总结一下。
(1)info Persistence
执行结果如下:
其中比较重要的包括:
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/
写这篇文章花费了我很多个小时,如果对你有帮助,就点个赞呗~