J'utilise MongoDB 3.4.3 et j'ai trois machines dans un jeu de réplicas. Let ses noms comme , server2
et server3
. server2
est dans un état de retour constant, donc nous l'avons éteint. server3
est en état de récupération et essaie d'obtenir oplog à partir de mais ses tentatives aboutissent à l'exception ExceededTimeLimit. Donc, c'est un extrait du journal server3
:Délai de réplication de MongoDB
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 }
Ainsi, ces attepms pour récupérer oplog sont infinies. Selon db.currentOp()
il existe un journal des requêtes en cours d'exécution sur le (le principal de l'ensemble de réplicas) en essayant de récupérer le journal des opérations. Ces requêtes diminuent la performance de , donc ma base de données fonctionne très très lentement.
La taille de l'oplog actuelle est 643 GB. Je pense que sa taille est la raison pour laquelle la réplication ne fonctionne pas. server2
avait également des problèmes de dépassement de délai d'opération, donc nous l'avons éteint temporairement. Cette sutiation dure depuis plus d'une semaine. J'ai plus de 5 To de données sur la machine principale. Comment puis-je restaurer l'ensemble de réplicas?
upd: Nos serveurs ont chacun 64 Go de mémoire. Ce sont des machines virtuelles en effet.
Je peux avoir des temps d'arrêt en dernier recours. Et peut-être qu'il est temps pour elle ... – user2717575
Nos serveurs ont 64 Go de mémoire chacun. Ce sont des machines virtuelles en effet. – user2717575
Nous avons 10 * 1,1TB cluster .. Avec 120 Go de mémoire sur chaque .. Nous avons fait "test" avec 64 Go, mais la performance n'était pas assez bon. – JJussi