当前位置:  开发笔记 > 编程语言 > 正文

不同副本集成员上的不同索引

如何解决《不同副本集成员上的不同索引》经验,为你挑选了1个好方法。

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

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

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



1> Rob Moore..:

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

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

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

隐藏的成员将重新同步到副本集,并且您已全部设置.


他们不会.索引仅在创建时从主节点传播到辅助节点.由于这是一个隐藏的成员,它永远不会是主要的,索引永远不会传播.您必须从副本集中删除该成员,否则它是只读的,并将拒绝创建索引.一旦创建,成员将很乐意维护它.
实际上只有一个场景可以将索引扩展到其他服务器,那就是你从你的[备份](http://docs.mongodb.org/manual/core/backups) "隐藏"服务器,然后从备份启动一个新服务器,它将具有与原始服务器相同的索引.
推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有