Redis常见数据丢失情况分析及解决方案

异步复制导致的数据丢失:

      描述:

      由于master到slave的数据同步是异步的,也就是说master有请求时,master先反馈给客户端,然后才会向slave同步数据。期间可能存在部分数据还没有同步到slave,master就宕机了,然后这部分数据就丢失了。

      解决方案:

      设置min-slaves-lag的值为n秒,首先至少需要1个slave,一旦slave复制数据和同步的延迟超过n秒,那么就认为master宕机后损失数据过多,然后master拒绝写请求,用来将那些未同步到slave的数据降低到可控范围。

      脑裂导致的数据丢失:

      描述:

      当master所在的机器由于网络原因和slave以及sentinel短暂失去连接,但是master依然正常运行。此时sentinel就会认为master宕机了,会开始从slave中选举新的master,此刻集群中就会出现两个master,俗称脑裂。网络恢复正常后,旧的master会变成新的master的从节点,自己的数据会清空,然后重新从新的master复制数据。

      解决方案:

      同样是因为min-slaves-lag这个配置,如果master出现脑裂,不能继续给指定数量的slave发送数据,而且slave超过指定时间没有给自己ack消息,那么就拒绝客户端的写请求,从而减少数据丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值