Redis 'MISCONF Redis is configured to save RDB snapshots, but is currently not able to ...'

Redis遇到了报错:MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

从翻译上来看Redis被配置为保存RDB快照,但目前无法在磁盘上持久存储。

解决过程:

1、所以我上网查找解决办法,修改建议最多的是修改配置文件或者在redis-cli命令里面执行stop-writes-on-bgsave-error no 。

127.0.0.1:6379> config set stop-writes-on-bgsave-error no

我尝试了这样做并重启redis,确实好了。但是我翻译这个参数的意思是:停止写入bgsave错误,那么就是说没彻底解决问题,我又将配置改了回去,重新找寻解决办法。

 

2、首先想到的是写入权限会不会被同事动了,所以将redis目录和设置成了777。

chmod 777 redis
chmod 777 redis/dump.rdb

这可能是一小部分人的原因,但我的不是,修改后持久化还是失败。

 

3、百度得知另一种解决办法,修改系统参数。

/etc/sysctl.conf文件加入一行vm.overcommit_memory = 1或者执行

sysctl vm.overcommit_memory=1

但是我的问题依旧没有解决。

 

4、我又想到可能是redis写入的硬盘满了所以df -h查看了下使用空间。

Redis 'MISCONF Redis is configured to save RDB snapshots, but is currently not able to ...'

经过查看后果然是硬盘使用空间不够了(图中我是处理后了),我就把所有的日志删除了,修改了日志只保留七天的策略。

 

顺便附上Redis持久化的RDB和AOF两种机制图,方便大家了解执行机制,在选择时能更适合自己。

AOF:

Redis 'MISCONF Redis is configured to save RDB snapshots, but is currently not able to ...'

RDB:

Redis 'MISCONF Redis is configured to save RDB snapshots, but is currently not able to ...'

 

总结:至此我的问题解决了,但是整个过程用了将近两个小时。事后回想,既然上来想到了执行权限的问题,为什么会最后想到空间满了写不进去的问题。所以今后在遇到写入失败且近期没有进行过操作的情况下,首先应该执行df -h查看空间使用情况,记下来以儆效尤!

转载请标注原文地址:https://blog.csdn.net/weixin_41818665/article/details/105658114 

大国的博客

上一篇:Redis Save 与 BGSAVE 的区别


下一篇:第二部分之RDB持久化(第十章)