Redis启动正常,一段时间后报错,连不上redis(redis持久化出错)
Redis持久化报错
1、redis在最终目标上移动临时数据库文件时出错
错误: #Background saving error * 1 changes in 900 seconds. Saving... * Background saving started by pid 14568 # Error moving temp DB file temp-14568.rdb on the final destination authorized_keys (in server root dir /root/.ssh): Operation not permitted
分析原因:是因为redis的持久化机制RDB先将内存中的数据集写入临时文件(temp-pid.rdb),写成功后再替换之前的文件(dump.rdb),而现在写入临时文件出错,数据保存不了,导致程序崩溃
解决方案:
修改redis配置文件:vim /usr/local/redis/etc/6379.conf
将dir ./ 修改为redis配置文件所在目录:/usr/local/redis/etc/
最后重启redis
2、Redis持久化失败报错
错误:
WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1'
to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. [7679] 15 Jan 00:27:35.287 *
DB loaded from disk: 19.629 seconds
解决方案:在Linux系统设置一个参数(vm.overcommit_memory)即可解决。
编辑 sysctl.conf 配置文件:vim /etc/sysctl.conf
vm.overcommit_memory = 1
使配置文件生效:sysctl -p
最后重启redis
3、RDB和AOF持久化
以上俩个错误如果没有得到彻底解决,过一段时间还是报错或者重启数据丢失等,可以将RDB和AOF持久化都开启。
redis有两种持久化方式:一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化)
一种是AOF持久化(原理是将Reids的操作日志以追加的方式写入文件)
RDB是默认开启的,AOF需要修改配置文件来开启: vim redis.conf
修改完,重启redis
原文链接:https://www.cnblogs.com/cfzy/p/14911396.html
作者:等风来~~
本博客所有文章仅用于学习、研究和交流目的,欢迎转载。
如果觉得文章写得不错,或者帮助到您了,请点个赞。
如果文章有写的不足的地方,请你一定要指出,因为这样不光是对我写文章的一种促进,也是一份对后面看此文章的人的责任。谢谢。