INFO persistence 怎么读
INFO persistence 是持久化状态的唯一权威视图,把「上一次快照是什么时候、成功没有、AOF 是否开启、文件多大、当前有没有任务在跑」这些信息集中在一个输出里。排查持久化问题时应先看这一节,它能在几秒内区分三类情况:任务正在运行、任务上次失败、以及配置根本没有按预期生效。只监控实例存活而忽略这些字段,会漏掉服务正常但数据处于风险中的静默问题。
基本信息
| RDB 相关 | rdb_last_save_time、rdb_changes_since_last_save、rdb_last_bgsave_status |
|---|---|
| AOF 相关 | aof_enabled、aof_last_bgrewrite_status、aof_last_write_status、aof_current_size |
| 加载相关 | loading 与 rdb_last_load_keys_* 系列,反映最近一次加载情况 |
| 任务状态 | rdb_bgsave_in_progress、aof_rewrite_in_progress |
| 字段命名 | 不同版本存在差异,尤其 AOF 相关字段,监控脚本需按实际版本核对 |
典型使用场景
- 上线验收:确认持久化策略真的生效,而不是配置文件写了但实例没加载
- 日常巡检:把状态字段接入监控,快照失败与重写失败都应产生告警
- 故障排查:写入报 MISCONF 时确认是哪一类持久化任务失败
- 容量趋势分析:跟踪文件体积变化,判断重写是否按预期触发
- 恢复演练:核对 rdb_last_load_keys_* 与业务预期键数是否一致
观察与筛选
观察与筛选
redis-cli INFO persistence # 一次看全
redis-cli INFO persistence | grep -E 'rdb_last_bgsave_status|aof_last_bgrewrite_status'
redis-cli INFO persistence | grep -E 'rdb_changes_since_last_save|rdb_last_save_time'
redis-cli INFO persistence | grep -E 'aof_enabled|aof_current_size|aof_base_size'
redis-cli INFO persistence | grep -E 'loading|rdb_last_load_keys'
watch -n 30 "redis-cli INFO persistence | grep -E 'rdb_last_save_time|aof_current_size'" # 简易趋势观察关键字段与判断
| 字段 | 含义 | 异常判断 |
|---|---|---|
| rdb_last_bgsave_status | 最近一次后台快照结果 | err 表示磁盘或权限有问题 |
| rdb_changes_since_last_save | 距上次快照的写入次数 | 长期居高不下说明快照未成功 |
| aof_last_write_status | AOF 最近一次刷盘结果 | err 会触发写保护,需立即处理 |
| aof_last_bgrewrite_status | 最近一次 AOF 重写结果 | err 会导致文件持续膨胀 |
| loading | 当前是否正在从文件加载数据 | 为 1 时实例不对外提供服务 |
rdb_changes_since_last_save 长期居高不下的两层含义:一是 save 条件始终没被满足(例如写入量小、条件过于严格),二是快照持续失败。两者都意味着数据丢失风险在累积,判断时要结合 rdb_last_bgsave_status 一起看,只看一个字段容易误判。
不要用进程存活作为数据安全的判据:快照与重写失败都不会让进程退出,实例看起来完全健康,直到磁盘写满触发写保护或机器故障时才发现没有任何可用备份。状态字段的监控与磁盘使用率监控必须同时具备。