闭环验证落盘
DEBUG RELOAD 先按当前内存数据生成一份 RDB,再立刻从磁盘把它加载回来,相当于在同一个实例里做了一次「落盘—恢复」的闭环,用来确认持久化链路真的能用。它属于调试命令族,执行期间实例阻塞,适合在维护窗口或者从库上做自检。
基本信息
| 命令 | DEBUG RELOAD |
|---|---|
| 行为 | 保存并重新加载,过程阻塞主线程 |
| 风险等级 | 较高,失败可能让实例处于不可用状态 |
| 建议替代 | 低风险场景用 BGSAVE 加临时实例恢复验证 |
典型使用场景
- 调整过 RDB 相关配置后,验证数据仍能正常落盘并加载
- 升级版本后确认旧数据在新版本下可以被正确读取
- 怀疑数据文件有损坏时,用闭环验证代替直接重启
- 演练恢复流程并测量加载耗时,为真实故障估算窗口
- 配合 INFO persistence 的加载字段核对加载结果
执行与核对
执行与核对
# 执行前记录基线:键数量与内存占用
redis-cli DBSIZE
redis-cli INFO memory | grep used_memory_human
# 保存并重新加载,过程阻塞,务必安排在维护窗口
redis-cli DEBUG RELOAD
# 核对加载结果与保存状态,键数量应与执行前一致
redis-cli INFO persistence | grep -E 'rdb_last_load|rdb_last_bgsave_status'
redis-cli DBSIZE相关字段读法
| 字段 | 含义 | 正常表现 |
|---|---|---|
| rdb_last_load_keys_loaded | 上次加载的键数量 | 与 DBSIZE 基本吻合 |
| rdb_last_load_keys_expired | 加载时被判为已过期的键 | 有值属正常,反映过期键占比 |
| rdb_last_bgsave_status | 最近一次保存结果 | ok 为正常,err 要查磁盘 |
| rdb_bgsave_in_progress | 是否正在生成快照 | 执行前应为 0 |
| loading | 是否正在加载数据 | 加载过程中为 1 |
生产实例常用 enable-debug-command 或 rename-command 限制 DEBUG 系列命令;动手之前先确认命令是否可用,别等到应急时才发现执行不了。
大实例的加载可能持续数分钟,期间实例不响应请求;如果磁盘上只有一份损坏的 RDB,加载失败会让实例陷入不可用,所以执行前先备份数据文件。