Als Teil unseres Mongo-Clusters haben wir einen versteckten Knoten, den die Analytics-Leute für das Reporting verwenden. Ihre Abfragen unterscheiden sich ein wenig von denen, für die unsere Hauptanwendung optimiert ist.
Wir können die Leistung ihrer Abfragen erheblich verbessern, indem wir bestimmte Indizes hinzufügen, deren Berechnung relativ teuer ist und die ziemlich viel Speicher beanspruchen. Diese Indizes sollten von keiner der Abfragen verwendet werden, die auf unseren primären und sekundären Membern ausgeführt werden. Daher erscheint es etwas albern, Zeit und Arbeitsspeicher für die Mitglieder des Haupt-Replikatsatzes zu verwenden, um die Berichtsindizes zu berechnen und im Speicher zu belassen.
Gibt es eine Möglichkeit, einen Index zu erstellen, so dass er nur auf einem einzelnen Replikatsatzelement vorhanden ist? Gibt es eine Möglichkeit, meinem primären und sekundären Knoten mitzuteilen, dass er die Indizes, von denen ich weiß, dass sie nicht verwendet werden, nicht berechnet oder speichert?
Ja - Sie können eine Variation der Strategie verwenden, die zum Erstellen eines neuen Index in einem Replikatsatz ohne Ausfallzeit verwendet wird. Dies erfordert, dass das ausgeblendete Element offline geschaltet wird, während die Index (e) erstellt werden.
Hier ist der Link für die Strategie: Ссылка
In Ihrem Fall werden Sie das ausgeblendete Element offline schalten und in einem eigenständigen Modus neu starten (entfernen Sie die Option --replSet und verwenden Sie eine andere Portnummer). Sobald das Mitglied isoliert ist, können Sie die Indizes anpassen (entfernen Sie nicht benötigte und fügen Sie neue hinzu). Sobald die Indizes erstellt sind, starten Sie das Element mit dem alten Port und der Option --replSet neu.
Das ausgeblendete Element wird erneut mit der Replikatgruppe synchronisiert, und Sie sind alle festgelegt.
Tags und Links mongodb