(1)异步数据丢失问题:
当集群节点间网络或其他问题导致异步复制延时很高,如果此时master宕机了,
毫无疑问会丢失延时的这段时间的数据当集群节点间网络或其他问题导致异步复制延时很高,
如果此时master宕机了,毫无疑问会丢失延时的这段时间的数据
(2)脑裂问题:
当网络分区变化导致master和slave节点之间无法正常通信时,sentinel哨兵集群会选举
slave为master,此时与之前master连接的client一直发送数据,当我们进行恢复将原master
当做新master的slave节点的时候,那么后来一直发送到原master内存的数据会丢失
解决上述两种数据丢失的问题,redis配置文件中有以下两行:
min-slaves-to-write 3
min-slaves-max-lag 10
意味着至少要有3个slave节点与master保持10秒钟以内的数据同步,否则master就不会
接受新的请求,我们需要采取其他措施来应对
总的来看:遵从CAP理论的 CP,牺牲了A(可用性)
文章探讨了在Redis集群中遇到的两种数据丢失情况:一是由于网络问题导致的异步复制延迟,当master宕机时数据丢失;二是网络分区引发的脑裂,恢复后可能导致数据丢失。为防止这种情况,Redis配置中的min-slaves-to-write和min-slaves-max-lag参数要求至少3个slave节点在10秒内与master保持同步,否则master拒绝新请求,以此保障数据一致性,但牺牲了可用性。
1121

被折叠的 条评论
为什么被折叠?



