Ich habe kontinuierlich Daten in autosharded mongodb eingefügt. (nicht aktualisieren, nur Insertion)nosql mongodb replicaset autosharding, Datenverlust beim Ausführen eines Experiments
Experimentelle Setup 2 Scherben, jeder Scherbe hat 2 Knoten.
in shard1 -> node1 (primär), node2 in shard2 -> node3 (primär), node4
in einem Scherbe I sekundären Knoten (Knoten 2) nach unten gebracht -> noch die Daten korrekt nun eingefügt wurden Ich brachte die primäre (node1) auch runter -> komplette shard ist jetzt
Überraschenderweise nahm das ganze Mongo-Setup keine Schreibvorgänge.
gibt es eine andere Wendung in der Geschichte. Jetzt habe ich den Knoten2 nach oben gebracht, da dies der einzige verfügbare Knoten ist, wurde er primär und begann Daten zu akzeptieren.
Nach etwa 10 Minuten habe ich node1 auch hochgefahren.
Aber wenn ich die Daten überprüft, die ich in node1 eingefügt haben (wenn Knoten2 nach unten ist) verloren :(.
s1 s2
(n1,n2) (n3,n4)
--------- ---------
1. (up,up) (up, up) -> data was getting inserted
2. (up,down) (up, up) -> data was getting inserted properly (but got lost :()
3. (down, down) (up, up) -> no data inserts were happening
4. (down, up) (up, up) -> started taking data again
5. (up, up) (up, up) -> n1 picked data from n2, but couldn't give the data to n2
im letzten Schritt, wenn ich n1 gebracht, bekam es die neuen Datensätze während Schritt von n2, aber der, dass n1 bekam über 2 wurden vollständig verloren :(.
Ist das erwartete Verhalten von mongo?
Jemand mir bitte helfen, ich kann mehr Experimente ausgeführt werden, wenn erforderlich :).
Vielen Dank im Voraus, Vivekananda Tadala
danke für die Antwort, löste es viele meiner Zweifel, aber gibt es eine Möglichkeit, die Daten über den toten Master zu bekommen und es an den neuen Master zu schieben? Können wir etwas mit dem oplog machen? –
Ja ... zumindest in der Theorie. Wenn ein Rollback stattfindet, sollten die Daten in eine .bson-Datei im Datenverzeichnis geschrieben werden. Sie könnten mongorestore verwenden, um es auf den aktuellen Master anzuwenden. Wie auch immer, wir (MongoDB Entwickler) haben heute darüber gesprochen, dass wir nicht sicher waren, ob es tatsächlich in die Rollback-Datei geschrieben wurde, also könnte dort ein Fehler sein. Aber wenn es ist, wird es durch 1.8.0 behoben werden. – kristina
Fehlalarm, es ist nicht kaputt. Daten werden in einem Rollback/Verzeichnis gespeichert, siehe http://www.snailinaturtleneck.com/blog/2011/01/19/how-to-use-replica-set-rollbacks/. – kristina