Mongos geben keine vorhandenen Daten in Shards zurück


7

Wir haben also eine Konfiguration von 2 Shards (jedes ist ein Replikatsatz) und einer Sharded-Sammlung.

In jedem Shard befinden sich rund 10 Millionen Datensätze. Wir verwenden die Version Mongo 2.6.4. Wir haben mit dem Hash- Schlüssel hash_id sharded, den wir speziell für das Sharding generiert haben.

Wir rufen Daten nach ID von Mongos ab und die meisten Abfragen funktionieren, aber für einige der Abfragen (ca. 10.000) gibt Mongos null zurück, obwohl sie in einem der Shards vorhanden sind, und wir können sie direkt von Shards abrufen .

Weiß jemand, warum Mongos oder Konfigurationsserver keine Informationen für einige IDs haben und gibt es eine Möglichkeit, diese zu beheben? Gibt es eine Operation, mit der Daten auf Konfigurationsservern aktualisiert werden, um Informationen zu allen Datensätzen in der Datenbank zu erhalten?

Danke, Ivan


Bitte erläutern Sie: Was meinen Sie mit direktem Abrufen? Direkte Verbindung mit der primären / einzelnen Instanz des Replikatsatzes dieses Shards herstellen? Haben Sie die Protokollausgabe der Konfigurationsserver überprüft? Nur um Sie vorzubereiten: Es gibt keine einfache Möglichkeit, die Metadaten wiederherzustellen. Mein Vorschlag: Erstellen Sie eine Sicherungskopie dieser Sammlung von jedem Splitter. SCHNELLSTMÖGLICH.
Markus W Mahlberg

Antworten:


1

Geben Sie den Befehl flushRouterConfig ein und probieren Sie es aus. Es erzwingt, dass Mongos zwischengespeicherte Metadaten löschen, die nicht mehr aktuell sind.

Lassen Sie mich wissen, wenn es nicht funktioniert.


0

Eine Lösung ist mongodump, die Sammlung von beiden Replikatsätzen (Shards) und dann aus dem Cluster zu entfernen. Erstellen Sie es mit aktiviertem Sharding neu und importieren Sie dann alle Daten aus beiden Dump-Dateien.

Wenn ein Knoten jedoch so viel Speicherplatz haben könnte, dass er alle Dokumente verarbeiten kann, können Sie diesen anderen Shard entleeren (dh alle Dokumente in einen Shard verschieben). Anschließend fügen Sie diesen anderen Shard zurück und lassen Balancer Ihren Cluster ausgleichen.

In letzter Zeit hat man den Vorteil, dass keine Wartungspause erforderlich ist. Das System bedient die Kunden ständig.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.