前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis Cluster FlushAll失败

Redis Cluster FlushAll失败

作者头像
用户1148526
发布2019-07-02 14:12:02
1.9K0
发布2019-07-02 14:12:02
举报
文章被收录于专栏:Hadoop数据仓库Hadoop数据仓库

转自:http://longlongblog.cn/2017/11/01/58/

问题背景

Flush是一个极少用到的操作,不过既然碰到过诡异的现象,也记录在此。

问题场景是在Reids Cluster中使用主从模式,向主节点发送flush命令,预期主从节点都会清空数据库。但是诡异的现象出现了,我们得到的结果是主从节点发生了切换,并且数据并没有被清空。

问题分析

分析以上case,Redis采用单线程模型,flush操作执行的时候会阻塞所有其它操作,包括集群间心跳包。当Redis中有大量数据的时候,flush操作会消耗较长时间。所以该节点较长时间不能跟集群通信,当达到一定阈值的时候,集群会判定该节点为fail,并且会切换主从状态。

Redis采用异步的方式进行主从同步,flush操作在主节点执行完成之后,才会将命令同步到从节点。此时老的从节点变为了主节点,它不会再接受来自老的主节点的删除数据的操作。

当老的主节点flush完成的时候,它恢复与集群中其它节点的通讯,得知自己被变成了从节点,所又会把数据同步过来。最终造成了主从节点发生了切换,并且数据没有被清空的现象。

解决方案

解决方式:临时调大集群中所有节点的cluster-node-timeout参数

代码语言:javascript
复制
port 7000  //7000-7005
cluster-enabled yes   //开启集群
cluster-config-file nodes.conf  //保存节点配置,自动创建,自动更新
cluster-node-timeout 5000    //集群超时时间,节点超过这个时间没反应就断定是宕机
appendonly yes   //存储方式,aof,将写操作记录保存到日志中
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题背景
  • 问题分析
  • 解决方案
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档