Redis 默认并不会自动启用 RDB
方法一:(手动)触发RDB快照 推荐。
默认情况下,redis.conf 文件中的 RDB 相关配置
# 默认情况下
#save 900 1
#save 300 10
#save 60 10000
# 是否压缩 RDB 文件,默认开启
rdbcompression yes
# 是否计算 RDB 文件的校验和,默认开启
rdbchecksum yes
取消注释这些save注释即可开启RDB快照。
快照规则:
· 15 分钟内至少有一个键发生了变化,Redis 将创建一个 RDB 快照。
· 5 分钟内至少有 10 个键发生了变化,Redis 将创建一个 RDB 快照。
· 1 分钟内至少有 10000 个键发生了变化,Redis 将创建一个 RDB 快照
保存目录和名称见redis.conf
名称:dbfilename dump.rdb
目录:dir ./ ----》修改后服务启动报错
bug1: 已解决
正常配置了redis.conf文件后(取消save注释),无法正常触发rdb快照。
--》暂时bgsave触发快照
-----》解决:
save 3600 1
save 300 100
save 60 10000
参照定义如前:但是save 3600 1 实际指的是满足3600秒才会触发!
可以按照想要的时间间隔来配置参数。
bug2: --》可能与配置的系统脚本有关
在使用systemctl start redis时加载dir ./ 目录后无法正常加载dump.rdb文件。
使用/opt/redis/redis-6.2.14/src/redis-server启动时可以正常加载dump.rdb文件
省流版:
- 配置文件redis.conf取消save注释,触发规则完成备份。
- 定义redis.conf中dir参数(可选)或者find / -name dump.rdb 看下RDB快照保存位置注意RDB文件生成位置即为redis数据目录加载位置。
- save规则自动触发生成或者手动bgsave生成dump.rdb
- redis宕机
- 将想要替换的RDB(来源于手动cp备份)替换到RDB文件生成位置,重启redis即可加载RDB文件。
方法二:配置定时RDB快照
由于生产实际,接下来都忽略定时方法。
在Linux系统上使用cron来定期执行命令:
# 在crontab中添加如下行
0 1 * * * redis-cli -h <master_ip> -p <port> bgsave && cp /var/lib/redis/dump.rdb /backup/
上面的例子会在每天凌晨1点触发一次RDB快照,并将生成的RDB文件复制到备份目录中。
示例:
0 1 * * * redis-cli -h localhost -p 6379 bgsave
这里的各个字段代表:
第一个字段 (0):分钟
第二个字段 (1):小时
第三个字段 (*):月份中的哪一天
第四个字段 (*):月份
第五个字段 (*):星期几