2017-06-28 2 views
0

Ich benutze MongoDB 3.4.3 und habe drei Maschinen in einem Replikat-Set. Lassen Sie ihre Namen wie , server2 und server3. server2 ist in einem konstanten Rollback-Status, also haben wir es abgeschaltet. server3 befindet sich im Wiederherstellungsstatus und versucht, oplog von zu bekommen, aber seine Versuche führen zu ExceededTimeLimit Ausnahme. Das ist also ein Auszug aus dem server3 log:MongoDB Replikations-Timeout

2017-06-26T14:42:14.442+0300 I REPL  [replication-0] could not find member to sync from 
2017-06-26T14:42:24.443+0300 I REPL  [rsBackgroundSync] sync source candidate: server1:27017 
2017-06-26T14:42:24.444+0300 I ASIO  [NetworkInterfaceASIO-RS-0] Connecting to server1:27017 
2017-06-26T14:42:24.455+0300 I ASIO  [NetworkInterfaceASIO-RS-0] Successfully connected to server1:27017 
2017-06-26T14:42:54.459+0300 I REPL  [replication-0] Blacklisting server1:27017 due to required optime fetcher error: 'ExceededTimeLimit: Operation timed out, request was RemoteCommand 191739 -- server1:27017 db:local expDate:2017-06-26T14:42:54.459+0300 cmd:{ find: "oplog.rs", oplogReplay: true, filter: { ts: { $gte: Timestamp 1497975676000|310, $lte: Timestamp 1497975676000|310 } } }' for 10s until: 2017-06-26T14:43:04.459+0300. required optime: { ts: Timestamp 1497975676000|310, t: 20 } 

Also diese attepms abrufen oplog unendlich sind. Laut db.currentOp() gibt es ein Protokoll der lange laufenden Abfragen auf dem (das primäre der Replikat-Gruppe) versuchen, das Oplog abzurufen. Diese Abfragen verschlechtern die Leistung von , so dass meine Datenbank sehr, sehr langsam arbeitet.

Die aktuelle 's Oplog-Größe ist 643 GB. Ich denke, seine Größe ist der Grund, warum die Replikation nicht funktioniert. server2 hatte auch Probleme mit dem oplog-Timeout, also haben wir es vorübergehend abgeschaltet. Diese Behandlung dauert länger als eine Woche. Ich habe mehr als 5 TB Daten auf der primären Maschine. Wie kann ich das Replikat wiederherstellen?

upd: Unsere Server haben jeweils 64 GB Speicher. Es sind tatsächlich virtuelle Maschinen.

Antwort

1

Können Sie Ausfallzeiten haben? Weil es so aussieht, als ob Ihre Maschine (Server1) nicht genug Speicher hat. Mit 5 TB Daten und diesem großen opLog beträgt die benötigte Speichermenge Hunderte von GB. Ich würde nicht versuchen, dieses System als ein Replikat zu betreiben. Mehr wie 3-5 Shards Cluster (total 9-15 Knoten; Replik-Set von 3 für jeden Shard). Gute Regel ist, halten Knotengröße immer unter 2 TB und 1 TB ist ein guter Ausgangspunkt, wenn Sie das archivieren können.

Wenn Sie Ausfallzeiten haben können, sollten Sie Ihren opLog auf eine vernünftige Größe verkleinern. Sie könnten mit 50 GB beginnen. Schritte können here gefunden werden.

+0

Ich kann Ausfallzeiten als letztes Mittel haben. Und vielleicht ist es Zeit dafür ... – user2717575

+0

Unsere Server haben jeweils 64 GB Speicher. Es sind tatsächlich virtuelle Maschinen. – user2717575

+0

Wir haben 10 * 1,1 TB Cluster .. Mit 120 GB Speicher auf jedem .. Wir haben "Test" mit 64 GB, aber die Leistung war nicht gut genug. – JJussi