RDB 配置怎么设
RDB 相关配置决定快照什么时候生成、存到哪里:save 行定义自动快照的触发条件,例如 900 秒内至少 1 个键发生变更;dbfilename 与 dir 决定文件名和落盘目录;rdbcompression 与 rdbchecksum 控制压缩与校验。Redis 7.0 起 save 支持把多组条件写在同一行。配置在运行时改完想持久化,必须执行 CONFIG REWRITE。
基本信息
| save | 自动快照触发条件,可写多行,7.0 起可合并为一行 |
|---|---|
| save 空字符串 | 关闭自动快照,需要另行安排备份 |
| dbfilename | 快照文件名,通常为 dump.rdb |
| dir | 落盘目录,必须对运行用户可写 |
| rdbcompression / rdbchecksum | LZF 压缩字符串对象与末尾 CRC64 校验 |
典型使用场景
- 调整快照频率,在性能与数据安全之间取平衡
- 把快照目录迁到独立磁盘,避免与数据盘争抢 IO
- 关闭自动快照,改用外部备份方案
- 排查快照失败与随之而来的拒绝写报错
- 核对运行时的配置是否被临时改过
配置示例
配置示例
dir /var/lib/redis # RDB 与 AOF 的落盘目录,需可写
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000 # 60 秒内 1 万次变更触发
# 7.0 及以上可合并成一行:
# save 900 1 300 10 60 10000
rdbcompression yes
rdbchecksum yes
stop-writes-on-bgsave-error yes配置项与注意
| 配置项 | 作用 | 注意事项 |
|---|---|---|
| save | 自动快照触发条件 | 条件越多触发越频繁,写放大 |
| save 空值 | 关闭自动快照 | 需要配套的外部备份方案 |
| dir | 落盘目录 | 权限不对会导致快照静默失败 |
| dbfilename | 文件名称 | 同机多实例必须区分开 |
| rdbcompression | 压缩字符串对象 | 省空间,消耗少量 CPU |
| stop-writes-on-bgsave-error | 快照失败时停止写入 | 避免在无持久化状态下继续跑 |
运行时用 CONFIG SET save 改完条件,如果不执行 CONFIG REWRITE 就不会写回配置文件,重启后设置悄悄回退,排查问题时最容易被这个现象带偏。
dir 指向没有写权限的目录时,快照会静默失败,之后触发拒绝写报错;上线前先手工触发一次 BGSAVE,确认落盘路径真的可用。
完全关闭自动快照需要配套外部备份方案,否则等同于放弃崩溃恢复能力:磁盘一旦故障,数据会一起消失。