Auparavant, je n'avais plus d'espace disque et mongodb a cessé de fonctionner. Ensuite, j'ai augmenté la taille du disque, mais mongodb ne commence pas à fonctionner.La commande de réparation MongoDB a échoué
Bien que j'ai activé la journalisation, je dois exécuter la commande suivante
sudo -u mongodb mongod --dbpath/var/lib/MongoDB/--repair
Mais cette commande de réparation a une exception et arrêter la réparation et puis quittez.
Fri Nov 30 13:29:36 [initandlisten] build index bd_production.news { _id: 1 }
Fri Nov 30 13:29:36 [initandlisten] fastBuildIndex dupsToDrop:0
Fri Nov 30 13:29:36 [initandlisten] build index done. scanned 2549 total
records. 0.008 secs
Fri Nov 30 13:29:36 [initandlisten] bd_production.change_sets
Assertion failure isOk() src/mongo/db/pdfile.h 360
0x879d86a 0x85a9835 0x85e441e 0x84caa02 0x84c7d19 0x8229b5a 0x822bfd8
0x875bd51 0x875f0c7 0x8760df4 0x83e6523 0x83b6c3b 0x8753b07 0x83b92bf
0x8827ab7 0x882a53b 0x882d4bf 0x882d691 0x85ed280 0x81719dc
mongod(_ZN5mongo15printStackTraceERSo+0x2a) [0x879d86a]
mongod(_ZN5mongo10logContextEPKc+0xa5) [0x85a9835]
...
...
...
... some error msg
Fri Nov 30 13:29:36 [initandlisten] assertion 0 assertion
src/mongo/db/pdfile.h:360 ns:bd_production.change_sets
query:{}
Fri Nov 30 13:29:36 [initandlisten] problem detected during query over
bd_production.change_sets : { $err: "assertion
src/mongo/db/pdfile.h:360" }
Fri Nov 30 13:29:36 [initandlisten] query
bd_production.change_sets ntoreturn:0 keyUpdates:0 exception:
assertion src/mongo/db/pdfile.h:360 reslen:71 197ms
Fri Nov 30 13:29:36 [initandlisten] exception in initAndListen: 13106
nextSafe(): { $err: "assertion src/mongo/db/pdfile.h:360" }, terminating
Fri Nov 30 13:29:36 dbexit:
...
...
La collecte de nouvelles a été réparée avec succès, mais le 'change_set' n'est pas réparé correctement. Comment puis-je réparer la collection (change_set) ou la base de données en question?
MISE À JOUR: Quand je lance mongodump avec --repair pour cette collection change_set je suis message d'erreur:
Tue Dec 4 10:45:21 [tools] backwards extent pass
Tue Dec 4 10:45:21 [tools] extent loc: 5:1181e000
Tue Dec 4 10:45:21 [FileAllocator] allocating new datafile /home/suvankar/dd/bd_production.5, filling with zeroes...
Tue Dec 4 10:45:21 [FileAllocator] creating directory /home/suvankar/dd/_tmp
Tue Dec 4 10:45:21 [FileAllocator] done allocating datafile /home/suvankar/dd/bd_production.5, size: 511MB, took 0.042 secs
Tue Dec 4 10:45:21 [tools] warning: Extent not ok magic: 0 going to try to continue
Tue Dec 4 10:45:21 [tools] length:0
Tue Dec 4 10:45:21 [tools] ERROR: offset is 0 for record which should be impossible
Tue Dec 4 10:45:21 [tools] wrote 1 documents
Tue Dec 4 10:45:21 [tools] extent loc: 0:0
Tue Dec 4 10:45:21 [tools] ERROR: invalid extent ofs: 0
Tue Dec 4 10:45:21 [tools] 5 objects
Tue Dec 4 10:45:21 dbexit:
Tue Dec 4 10:45:21 [tools] shutdown: going to close listening sockets...
Tue Dec 4 10:45:21 [tools] shutdown: going to flush diaglog...
Tue Dec 4 10:45:21 [tools] shutdown: going to close sockets...
Tue Dec 4 10:45:21 [tools] shutdown: waiting for fs preallocator...
Tue Dec 4 10:45:21 [tools] shutdown: lock for final commit...
lorsque j'ai exécuté la commande suivante j'ai eu l'erreur suivante msg: $ sudo mongodump --répair --dbpath/var/lib/mongodb 'Si vous utilisez un mongod sur le même chemin, vous devez vous connecter à ce lieu au lieu de direct accès aux fichiers de données lun 3 déc 21:53:14 dbexit: lun déc 3 21:53:14 [outils] arrêt: aller fermer les prises d'écoute ... lun déc 3 21:53:14 [tools] shutdown : va rincer diaglog ... . Lun Dec 3 21:53:14 [outils] shutdown: fermeture de tous les fichiers ... Lun Dec 3 21:53:14 [outils] closeAllFiles() terminé Lun Dec 3 21:53:14 dbexit: vraiment sortir maintenant ' – suvankar
Ok, donc un certain nombre de choses - 1. MongoDB ne devrait pas être en cours d'exécution lorsque vous essayez ceci - je ne pense pas que ce soit, mais juste pour être sûr; 2. Vous devriez probablement spécifier notre répertoire de sortie (voir les options sur la page de commande que j'ai liée); 3. Vous devez spécifier la base de données que vous essayez de sauvegarder (avec '--db') et optionnellement la collection (' --collection') - en gros ma commande exemple était juste cela, un exemple, vous devez fournir une commande complète en fonction de vos besoins pour que cela fonctionne –
J'ai corrigé la commande pour faire réparer avec mongodump ... mais pas de chance !! le message d'erreur que j'ai reçu est dans la section mise à jour de ma question. Après l'exécution de la commande, créez un fichier change_set.bson vide, mais aucun fichier de métadonnées n'est créé.d'autres collections fonctionnent correctement. – suvankar