设为首页 收藏本站
查看: 940|回复: 0

[经验分享] Redis无法写入故障排查过程

[复制链接]

尚未签到

发表于 2018-11-2 11:51:19 | 显示全部楼层 |阅读模式
  一、故障表现
  1、新增一个key失败
  127.0.0.1:6379> set lion 2
  (error) 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.
  2、无法关闭服务
  service redis-server restart
  service redis-server stop
  两个命令都是一直卡在stop那一步,一直无法关闭
  kill ps aux|grep 'redis-server '|grep -v grep|awk '{print $2}'    #无法杀掉
  kill -9 ps aux|grep 'redis-server '|grep -v grep|awk '{print $2}' #强行杀掉
  强行杀掉后无法启动,原来还有个pid的文件没有删除
  /run/redis/redis-server.pid
  rm /run/redis/redis-server.pid  #手动删除它之后才能启动Redis
  补充:
  下面是无法关闭redis-server的原因
  8576:signal-handler (1527833505) Received SIGTERM scheduling shutdown...
  8576:M 01 Jun 14:11:45.180 # User requested shutdown...
  8576:M 01 Jun 14:11:45.180 * Saving the final RDB snapshot before exiting.
  8576:M 01 Jun 14:11:45.180 # Failed opening .rdb for saving: Permission denied
  8576:M 01 Jun 14:11:45.180 # Error trying to save the DB, can't exit.
  8576:M 01 Jun 14:11:45.180 # SIGTERM received but errors trying to shut down the server, check the logs for more information
  二、搜索解决方法
  1、关闭”当持久化出错时停止写入硬盘“
  127.0.0.1:6379> config set stop-writes-on-bgsave-error no
  2、修改目录及持久化权限为755
  本来该目录就是755,所以与此无关。
  看了几篇基本上和这两个相关。
  三、老老实实看日志解决办法
  1、在调试过程中一直监控日志
  tail -f /var/log/redis/redis-server.log #文件目录及文件名请按自己配置文件,有两行有用的信息
  27915:C 01 Jun 14:12:14.038 # Failed opening .rdb for saving: Permission denied
  8576:M 01 Jun 14:12:14.138 # Background saving error
  2、将dump.rdb所在目录权限修改为777,并将原来的dump.rdb删除,杀掉redis-server并删除redis-server.pid后启动redis-server,奇迹出现了。
  ll
  -rw-rw----  1 redis redis   41 Jun  1 14:42 dump.rdb
  看到亮点了吧,用户和用户组都是redis,为啥?
  3、再来看服务启动的脚本
  vi /etc/init.d/redis-server
  其中有一段
  Run_parts () {
  if [ -d /etc/redis/${NAME}.${1}.d ]
  then
  su redis -s /bin/sh -c "run-parts --exit-on-error /etc/redis/${NAME}.${1}.d"
  fi
  }
  su redis 就在这。
  四、最终解决
  chown redis:redis -R dir   #dir 为redis配置文件中dir的目录
  chmod 755 dir           #dir 为redis配置文件中dir的目录,最后要将前面改为777的权限恢复回来。
  五、总结
  在这个事件中本来是很简单的问题,但在此过程中花费了挺长时间,前前后后花了半天。究其原因有二,一是心急,没有好好看日志;二是意外,没有想到会使用redis这个用户来启动,因为启动的时候是在root权限下。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629813-1-1.html 上篇帖子: php 安装redis,protobuf,mcryp扩展 下篇帖子: redis基础数据类型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表