这个mongodb指南:http://www.mongodb.org/pages/viewpage.action?pageId=19562846表示如果您的数据映射到多个EBS卷,那么您需要在快照之前锁定数据库。我在4个EBS卷上使用RAID 10,但我的数据库只在一个实例上(没有副本集),我现在想保持这种方式。由于我想每小时对数据进行快照,我担心每次都要锁定数据库 - 我不能每小时都有停机时间,我也不能每小时都拒绝写入请求。有没有办法绕过这个锁?
答案 0 :(得分:3)
如果未锁定数据库,则无法保证在拍摄快照时跨多个RAID卷的数据一致性。这基本上是RAID配置的限制,而不是MongoDB - 锁只是确保数据库数据在拍摄快照时不会改变的一种方式,因此可以绕过RAID限制(至少对于MongoDB数据)。 / p>
如果您想避免因锁定数据库而导致停机,那么您将需要使用辅助设备来拍摄快照(您可以将其隐藏起来,以便它永远不会接管或提供读取)。对于单个节点,正如您所描述的那样,您不能这样做 - 它是停机(因为锁定)的一致性,或使用其他节点进行备份,否则您的快照基本上没有价值。
注意:如果辅助节点可以在单个EBS卷上保持复制并且您正在运行日记功能,那么您可以根据需要进行快照,根本不需要锁定数据库。隐藏的辅助辅助设备不需要与主设备相同,它只需要足够好以便跟上。