J'utilise mongodump à partir des outils mongo pour télécharger une sauvegarde de mon serveur. Cependant, lorsque j'exécute la commande, la commande renvoie "Champ non reconnu 'snapshot'".
L'erreur complète est:
Failed: error reading collection: Failed to parse: { find: "data", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "xxx" }. Unrecognized field 'snapshot'.
Mongodump --version renvoie:
mongodump version: built-without-version-string
git version: built-without-git-spec
Go version: go1.7.3
os: linux
arch: amd64
compiler: gc
OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
Je pourrais avoir besoin de rétrograder ma version? Sinon, je ne sais pas où aller d'ici ...
mongodump --version
sortie suggère que vous avez construit les outils à partir des sources, il n'est donc pas évident de savoir à quelle version de MongoDB cela pourrait correspondre. Dans la mesure du possible, je suggère de télécharger les fichiers binaires officiels.Réponses:
Vous avez certainement une différence de version entre mongodump et votre serveur mongoDB (3.6 vs 4.0).
Vous pouvez utiliser docker à la rescousse:
Avec docker, vous pouvez utiliser une version précise des outils cli sans l'installer.
Vous pouvez même spécifier un alias (en .bashrc):
Remarque: Le dossier dans lequel le vidage est enregistré devra disposer d'autorisations d'écriture pour que l'utilisateur mongodb dans le conteneur puisse écrire sur le volume monté. Cela peut être réalisé en définissant manuellement les autorisations sur le dossier de vidage avant d'exécuter la commande ci-dessus.
Dans l'exemple ci - dessus serait:
mkdir -m 777 dump
. Une fois le vidage terminé, les autorisations peuvent être modifiées pour revenir à une normale (c'est-à-diresudo chmod 755 dump
).la source
Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied
. J'ai essayé avec-u 0
et-o /tmp/dump
, mais je n'ai pas réussi à le faire fonctionner. J'ai finalement fini par démarrer un conteneur, en exécutant le vidage, puis en le copiant hors du conteneur. Des idées où je me suis trompé avec le one-liner?docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
Ajouter
--forceTableScan
Exemple:
http://aug2uag.blogspot.com/2018/08/mongoexport-unrecognized-field-snapshot.html
la source