[转]redis持久化和常见故障

2018-10-18  本文已影响0人  西葫芦炒胖子

Redis主从复制的原理

当建立主从关系时,slave配置slaveof <master_host> <master_port> 。slave服务器会向主服务器发送一个sync命令。master接受并fork一个进程来执行BGSAVE命令。该命令生成一个RDB文件并且全量发送给slave服务器,slave服务器接收并载入RDB文件,同时,主服务器将缓冲区的命令以增量的方式发送给从服务器,最终使从服务器的数据状态和主服务器保持一致。

RDB的工作原理

当redis生成dump.rdb文件时,工作过程如下

redis主进程fork一个子进程

fork出来的子进程将内存的数据集dump到临时的RDB中

当子进程对临时的RDB文件写入完毕,redis用新的RDB文件代替旧的RDB文件

AOF的工作原理

AOF :append only file。每当Redis执行一个改变数据集的命令时,这个命令都会被追加到AOF文件的末尾。当redis重新启动时,程序可以通过AOF文件恢复数据

持久化文件监控

Redis 监控最直接的方法当然就是使用系统提供的 info 命令来做了,只需要执行下面一条命令,就能获得 Redis 系统的状态报告。

redis-cli info

RDB文件状态监控

其中跟RDB文件状态监控相关的参数

rdb_changes_since_last_save 表明上次RDB保存以后改变的key次数

rdb_bgsave_in_progress 表示当前是否在进行bgsave操作。是为1

rdb_last_save_time 上次保存RDB文件的时间戳

rdb_last_bgsave_time_sec 上次保存的耗时

rdb_last_bgsave_status 上次保存的状态

rdb_current_bgsave_time_sec 目前保存RDB文件已花费的时间

AOF文件状态监控

其中跟AOF文件状态监控相关的参数

aof_enabled AOF文件是否启用

aof_rewrite_in_progress 表示当前是否在进行写入AOF文件操作

aof_rewrite_scheduled

aof_last_rewrite_time_sec 上次写入的时间戳

aof_current_rewrite_time_sec:-1

aof_last_bgrewrite_status:ok 上次写入状态

aof_last_write_status:ok 上次写入状态

上一篇下一篇

猜你喜欢

热点阅读