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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM