校验和是怎么用的
rdbchecksum 默认开启:快照写完后在文件尾部追加一个 CRC64 校验和,加载时先做完整性校验,不通过就直接拒绝启动。这样做的价值是把「文件在硬盘或传输过程中损坏」变成一次明确的启动失败,而不是悄悄载入一批错数据。代价是生成与加载各多出一点 CPU 开销,官方文档描述为对性能影响很小。
基本信息
| 配置项 | rdbchecksum yes(默认开启) |
|---|---|
| 校验方式 | CRC64 校验和写入文件尾部 |
| 生效时机 | 生成快照时写入,加载时校验 |
| 工具 | redis-check-rdb 可离线校验已有文件 |
| 历史情况 | 早期版本生成的快照可能不带校验和 |
典型使用场景
- 备份归档后逐个文件做离线校验,确认没有被截断或损坏
- 恢复演练时先校验再加载,避免把坏文件带进恢复流程
- 怀疑磁盘或传输链路有问题时用它区分「文件坏」还是「数据错」
- 跨环境拷贝快照后核对完整性,尤其是经过压缩与解压的场景
- 排查启动直接退出的原因,确认是否为校验失败
查看与校验
查看与校验
redis-cli CONFIG GET rdbchecksum # 查看当前取值
redis-cli CONFIG SET rdbchecksum yes # 保持开启,不建议关闭
redis-check-rdb /data/redis/dump.rdb # 离线校验并输出摘要
echo $? # 返回码非 0 说明文件有问题校验结果怎么读
| 输出信息 | 含义 | 应对 |
|---|---|---|
| 版本与键数量行 | 文件可解析,给出格式版本与键总数 | 与备份记录核对数量是否一致 |
| 校验通过提示 | 尾部校验和与内容匹配 | 可以进入加载或恢复流程 |
| 校验失败或截断提示 | 文件不完整或已损坏 | 换一份备份,同时排查磁盘与传输 |
| 缺少校验和 | 老快照或写入过程被中断 | 谨慎使用,优先换更新的备份 |
校验只能证明文件完整,不能证明内容正确:快照期间由业务逻辑写错的脏数据同样能通过校验,别把它当成数据正确性的证明。
关闭校验能省一点开销,但损坏文件可能直接被加载出脏数据,收益与风险不对等,生产环境保持默认开启。