我们目前在亚马逊的EC2实例上部署了mongodb分片群集。这些分片也是副本集。使用的实例使用的是配置了IOPS的EBS。
我们在一个集合中有大约3000万个文档。我们的查询计算与过滤器匹配的整个集合。我们在几乎所有可查询字段上都有索引。这导致RAM达到100%的使用率。我们的工作集超过了RAM的大小。我们认为查询响应缓慢是由于EBS速度慢导致我们考虑迁移到新的SSD支持的实例。
I2即将推出 http://aws.typepad.com/aws/2013/11/coming-soon-the-i2-instance-type-high-io-performance-via-ssd.html
我们唯一担心的是SSD是短暂的,这意味着一旦实例停止,终止或失败,数据就会消失。我们怎么解决这个问题呢?我们如何自动化备份。迁移到SSD以提高查询性能是一个好主意吗?我们还需要设置分片群集吗?
答案 0 :(得分:0)
使用临时磁盘是一种风险,但如果您正确地进行了复制设置,那么这应该不是一个大问题。我假设您已经设置了三节点副本集正确吗?您的配置服务器还有三个节点吗?
我可以从经验中谈到这一点,因为我所在的公司已经采用这种方式设置。为了帮助降低风险,我正在采用涉及隐藏副本的备份策略。通过此设置,我可以关闭隐藏的副本集和其中一个配置服务器(首先停止平衡)并获取数据文件的完整副本(副本和配置服务器)并拥有有效的备份。如果AWS在我的可用区域中出现故障,我仍然可以在S3上进行每日备份以从中恢复。
希望这有帮助。