记录一次因为redis aof rewrite重写导致的运维过程
2017-03-19 23:06
507 查看
事情起因
redis master 所在物理机A, 物理内存16G, aof rewrite 被触发时, aof文件已达12G, redis的默认配置触发了后台的rewrite进程, 内存占用达到了50%, 已严重影响到redis的正常访问. 而此时距离会对该redis master进行写操作
的业务进程开始运行只剩1小时.
处理过程
跟组里几名同事一起理清楚问题现状
redis slave的数据是完整的, 1小时内不会有写入请求aof rewrite进程已运行2小时, 是否能在1小时内运行完毕不可控
aof rewrite进程, 即使在1小时内运行完, 不确认是否会马上触发第2次rewrite
整理方案如下:
将物理机B的redis slave切换为master, 使其跟现有物理机A的redis脱离master-slave关系对生产环境的相关进程进行配置, 使其连接到新的redis master
测试, 验证服务正常
stop原来物理机A上的旧master进行, 暂时保留现场不动
第2天, 在执行写操作的业务进程停止写入后, 清理redis中的历史数据
周末进一步处理
备份和准备好必要的数据(这步很重要, 对生产环境的任何变更, 一定要做好备份)
将物理机A的redis配置为物理机B新master的slave
重命名该redis配置路径的aof文件
重启该redis, 使该redis从0开始从物理机A的redis master进行数据同步
手动触发物理机B的redis master的aof rewrite, 此过程完成后, aof文件从10G变为1.5G
补齐定期删除历史数据的server逻辑
相关文章推荐
- 记录一次chown误操作导致服务宕机修复过程(linux+nginx+php+mysql)
- 记录一次redis数据库搭建过程并详细说明配置
- 记录由于一次强制断电导致的服务器无法启动的恢复过程
- 记录一下SparkStreaming中因为使用redis做数据验证而导致数据结果不对的问题
- 记录一次因为Android版本不同导致的crash异常:Can't create handler inside thread that has not called Looper.prepare()
- 记录一次bug解决过程:else未补全导致数据泄露和代码优化
- 记录一次因为硬盘写满造成的redis无法连接
- 一次关于Redis内存诡异增长的排查过程实战记录
- 记一次线上分布式redis服务BUG发现与修复过程
- 一次 ORA-03113: end-of-file on communication channel 错误定位过程
- 一次Oracle数据库挂载迁移的过程记录
- 记录一次Mac虚拟机安装的过程(有图有真相)
- 记录下运维过程中出现的问题1
- 一次工作记录,写一遍为了更好地记忆(有用的内容都是转的,自己写的只是过程)
- [MySQL]记录一次线上故障处理过程--> has more than 'max_user_connections' active connections
- 记录一次对代码完全陌生的问题排查过程
- 记录一次软件Bug发生的过程
- 一次dblink和硬解析频繁导致服务堵塞的排查记录
- 记录一次压力测试 weblogic 11g 调优过程
- 最近在项目中实践了一下Redis,过程中遇到并解决了若干问题,记录之.