Redis持久化RDB切换AOF

道锋潜鳞
2021-02-14 / 0 评论 / 84 阅读 / 正在检测是否收录...

选择的标准,就是看系统是愿意牺牲一些性能,换取更高的缓存一致性(aof),AOF 的数据完整性比RDB高,但记录内容多了,会影响数据恢复的效率。还是愿意写操作频繁的时候,不启用备份来换取更高的性能,待手动运行save的时候,再做备份(rdb),RDB 持久化适合大规模的数据恢复但它的数据一致性和完整性较差。

redis默认持久化配置rdb,但是如果贸然切换配置到aof方式,重启会导致数据丢失

如果数据不重要,都是缓存数据则没什么,如果是重要临时数据,不能丢失的情况,则需要特殊处理,保证数据不丢失

根本原因

  • rdb方式默认将数据持久化存储到dump.rdb文件下
  • aof方式默认将数据写操作记录到appendonly.aof文件下
  • 如果同时开启2种方式,重启会默认加载aof方式
  • redis默认只开启rdb
  • 综上,如果你是默认rdb方式,然后贸然切换到aof,重启后会读取aof文件,但是这个时候aof文件是空的,则会导致redis被清空

解决方法

原理:在redis控制台动态配置打开 aof方式,在 shutdown安全退出后,自动记录了当前所有记录到 aof文件,再修改redis文件配置打开 aof方式,启动redis时会自动加载之前安全退出保存的 aof数据

进入redis

redis-cli

redis中动态修改配置并退出

127.0.0.1:6379> save  # 收到触发rdb存储数据
OK
127.0.0.1:6379> CONFIG SET appendonly yes  # 动态配置
OK
127.0.0.1:6379> save
OK
127.0.0.1:6379> shutdown save # 安全退出并存储数据
not connected> exit
[root@localhost ~]# 

修改redis配置,打开aof
vim redis.conf

appendonly no #aof方式默认关闭

启动redis
service redis start

附录

rdb配置

save 900 1   #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10  #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

aof配置

appendonly no #aof方式默认关闭
appendfilename "appendonly.aof" #文件名
appendfsync everysec #同步模式(可选no always everysec)
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes

宝塔可以在动态修改配置保存之后直接编辑配置文件或者直接设置持久化

然后启动服务即可

那我想找到这个aof文件或者rdb文件怎么办?

在服务启动后进入

redis-cli

127.0.0.1:6379> CONFIG GET dir #查看安装目录或者数据目录
1) "dir"
2) "/data/redis/redis_cache"

进入目录后不出意外的话就能看到想要的aof和rdb文件了

0

评论 (0)

取消