Ich verwende Mongodump von Mongo Tools, um ein Backup meines Servers herunterzuladen. Während ich den Befehl ausführe, gibt der Befehl jedoch "Nicht erkanntes Feld 'Momentaufnahme'" zurück.
Der volle Fehler ist:
Failed: error reading collection: Failed to parse: { find: "data", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "xxx" }. Unrecognized field 'snapshot'.
Mongodump --version gibt zurück:
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
Möglicherweise muss ich meine Version downgraden? Ansonsten unsicher, wohin man von hier aus gehen soll ...
mongodump --version
Ausgabe legt nahe, dass Sie die Tools aus dem Quellcode erstellt haben, sodass nicht klar ist, welcher Version von MongoDB dies entspricht. Nach Möglichkeit würde ich vorschlagen, die offiziellen Binärdateien herunterzuladen.Antworten:
Sie haben sicherlich einen Versionsunterschied zwischen mongodump und Ihrem mongoDB-Server (3.6 vs 4.0).
Sie können Docker zur Rettung verwenden:
Mit Docker können Sie eine genaue Version von Tools Cli verwenden, ohne es zu installieren.
Sie können sogar einen Alias (in .bashrc) angeben:
Hinweis: Der Ordner, in dem der Speicherauszug gespeichert ist, muss über Schreibberechtigungen verfügen, damit der Mongodb-Benutzer im Container auf das bereitgestellte Volume schreiben kann. Dies kann erreicht werden, indem die Berechtigungen für den Speicherauszugsordner manuell festgelegt werden, bevor der obige Befehl ausgeführt wird.
In dem obigen Beispiel das wäre:
mkdir -m 777 dump
. Nachdem der Dump abgeschlossen ist, können die Berechtigungen wieder auf einen normalen Wert (dhsudo chmod 755 dump
) geändert werden .quelle
Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied
. Ich habe es mit-u 0
und versucht-o /tmp/dump
, konnte es aber nicht zum Laufen bringen. Schließlich habe ich einen Container gestartet, den Dump ausgeführt und dann aus dem Container kopiert. Irgendwelche Ideen, bei denen ich mit dem Einzeiler einen Fehler gemacht habe?docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
Hinzufügen
--forceTableScan
Beispiel:
http://aug2uag.blogspot.com/2018/08/mongoexport-unrecognized-field-snapshot.html
quelle