11

作为 mongo 集群的一部分,我们有一个隐藏节点,分析人员使用该节点进行报告。他们的查询与我们的主应用程序优化的查询有很大不同。

我们可以通过添加某些索引来显着提高他们的查询性能,这些索引的计算成本相对较高,并且占用了相当多的内存。这些索引不应该被在我们的主要和次要成员上运行的任何查询使用,因此在主要副本集成员上花费时间和内存来计算并将报告索引保存在内存中似乎有点愚蠢。

有没有办法创建一个索引,使它只存在于一个副本集成员上?有没有办法告诉我的主节点和辅助节点不计算或存储我知道它们不会使用的索引?

4

1 回答 1

12

是的 - 您可以使用用于在副本集中创建新索引的策略的变体,而无需停机。这将要求在创建索引时使隐藏的成员脱机。

这是该策略的链接:http: //docs.mongodb.org/manual/tutorial/build-indexes-on-replica-sets/#procedure

在您的情况下,您将使隐藏的成员脱机并以独立模式重新启动(删除 --replSet 选项并使用不同的端口号)。一旦成员被隔离,您就可以调整索引(删除不需要的索引并添加新的索引)。创建完索引后,使用旧端口和 --replSet 选项重新启动成员。

隐藏的成员将重新同步到副本集,你就准备好了。

于 2013-05-09T23:14:00.420 回答