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

 

posted @ 2021-06-30 14:31  等风来~~  阅读(4290)  评论(0编辑  收藏  举报