作为我们的mongo集群的一部分,我们有一个隐藏节点,分析人员可以使用该节点进行报告.他们的查询与我们的主要应用程序优化的查询有很大不同.
我们可以通过添加某些索引来极大地提高查询的性能,这些索引的计算成本相对较高,并且需要相当大的内存.这些索引不应该被我们的主要成员和辅助成员上运行的任何查询使用,因此在主副本集成员上花费时间和内存来计算并将报告索引保留在内存中似乎有点愚蠢.
有没有办法创建索引,以便它只存在于单个副本集成员?有没有办法告诉我的主节点和辅助节点不计算或存储我知道他们不会使用的索引?
是 - 您可以使用用于在副本集中创建新索引的策略的变体而无需停机.这将要求在创建索引时使隐藏成员脱机.
以下是该战略的链接:http://docs.mongodb.org/manual/tutorial/build-indexes-on-replica-sets/#procedure
在您的情况下,您将使隐藏成员脱机并以独立模式重新启动(删除--replSet选项并使用其他端口号).隔离成员后,您可以调整索引(删除不需要的索引并添加新索引).创建索引后,使用旧端口和--replSet选项重新启动成员.
隐藏的成员将重新同步到副本集,并且您已全部设置.