我是mongodb和amazon ec2的新手
在我看来,mongo副本在这里:1 /避免数据丢失和2 /使读取和服务更快。
在亚马逊,他们有这个EbS的东西。据我所知,它是一个全局持久存储,例如dropbox
如果亚马逊用EBS抽象出它的需要,是否需要有复制品?
提前谢谢你
托马斯
答案 0 :(得分:1)
让我澄清一些事情。
如果您习惯于在现有技术中工作,则EBS本质上是一个SAN卷。它可以附加到一个实例,但它始终具有有限的IO。使用RAID可以帮助最大化IO,配置的IOPS可以帮助您最大化吞吐量。
然而,理想情况下,对于MongoDB,您希望有足够的内存来在内存中完全访问索引,如果需要命中磁盘,性能会下降。
Mongo可以使用Replicas,它主要用于故障转移和复制(您可以将读取发送到从属服务器,但所有写入都需要访问主服务器),以及用于拆分数据集以提高性能的分片。即使您使用EBS进行存储,您仍然需要做这些事情。
答案 1 :(得分:1)
副本不仅用于存储冗余,还用于服务器冗余。如果您的MongoDB服务器(使用EBS卷)突然消失,例如,所在的主机失败,会发生什么?你需要做一大堆东西,比如克隆一个新实例来替换它,将卷附加到那个实例,重新路由到它,等等.Mongo的副本集意味着你不必这样做。即使其中一个失败,它们也会继续工作,因此基本上没有停机时间。
此外,它还有一层冗余。到目前为止,您只能信任EBS - 如果AWS有一个错误会删除您的卷或使其无法使用不可接受的长时间,该怎么办?使用副本集,您甚至可以跨可用区域甚至是完全不同的云提供商复制数据。
副本集还允许您从多个节点读取数据,因此理论上,在您最大限度地从一个实例获取EBS连接后,您可以提高读取吞吐量。