我一直在阅读一些有关MongoDB容错的文章,有些人抱怨说MongoDB永远无法实现(就像在本文中一样:http://hackingdistributed.com/2013/01/29/mongo-ft/),这一点很困惑。
有人确认(并且如果可能的话显示适当的文档)使用Write Concern“Journal + Majority”足以确保我的驱动程序报告成功的100%写入被持久写入并赢得即使写完后任何副本失败也不会丢失?
我说的是3副本设置。我很好,系统在发生故障时不再接受写入,但是当驱动程序报告写入成功时,我需要它被持久地提交(不管之后复制副本的数量是否失败)。
答案 0 :(得分:0)
正确如此,如果选择日志写入,则基本上确保写入已将其写入单个节点的磁盘。如果您选择进行多数写入,则确保写入已进入副本集中至少x个节点的内存。
默认情况下,mongodb将每100毫秒从内存刷新到日志。通过将副本节点放在不同的计算机(物理或虚拟)上(理想情况下位于不同的数据中心),您很可能看不到地理上分布的副本集中的所有节点在到达磁盘之前的同一个100毫秒内停止运行。
或者保证写入将其写入单个节点的磁盘 - 使用日志写入。