MongoDB Replica Sets-让你的数据荡然无存?

绝对不是标题党,但可能是危言耸听,一名叫 Mathias Meyer 同学在其博客发文称他在仔细了解了MongoDB Replica sets 的机制后发现一个问题,按照官方的说法,在某种情况下会导致MongoDB几乎所有数据的丢失!

原文链接:http://goo.gl/rQHS4

让他产生疑问的是文官文档中的下面两段描述:

When a secondary connects to a new primary, it must resynchronize its position. It is possible the secondary has operations that were never committed at the primary. In this case, we roll those operations back.

When we become primary, we assume we have the latest data. Any data newer than the new primary’s will be discarded.

上面讲到,当Replica Sets主机倒掉,选举出新的主机后,其它从机可能会有比选出来的主机更新的数据,为了保证一致性和主机的权威性,从机中比主机新的数据将被悄悄地抹去。

Mathias Meyer同学的观点是,如果当一个新的节点加入到Replica Sets中,他正在从主机中同步数据,比如只同步了1%时,主机倒了,而根据mongodb的选举原则,这台只有1%数据的从机很有可能被选为主机(这个选举原则的描述本人持保留意见),这时候所有其它机器(包括刚才倒了的主机再起来后)都会将99%的数据清除掉。

听起来确实非常可怕!

anyShare赠人玫瑰,手有余香,分享知识,德艺双馨!
          

无觅相关文章插件,快速提升流量

  1. 正在执行重新同步的节点被视为“恢复中”,在完成这个过程之前不能成为活跃节点的候选者。

  2. 我也觉得,这样的节点不大可能成为Master,如果是这样的话,那个选举算法也太白痴了吧。

  3. Pingback: MongoDB Replica Sets-让你的数据荡然无存? | Rench's Life