Mongodump: "istantanea" di campo non riconosciuta


33

Sto usando mongodump dagli strumenti di mongo per scaricare un backup del mio server. Tuttavia, mentre eseguo il comando, il comando restituisce "Campo non riconosciuto 'snapshot'".

L'errore completo è:

Failed: error reading collection: Failed to parse: { find: "data", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "xxx" }. Unrecognized field 'snapshot'.

Mongodump: restituisce la versione:

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

Potrei dover effettuare il downgrade della mia versione? Altrimenti incerto su dove andare da qui ...


1
Quali sono le tue versioni di server O / S e MongoDB? Il tuo mongodump --versionoutput suggerisce che hai creato gli strumenti dal sorgente, quindi non è ovvio a quale versione di MongoDB potrebbe corrispondere. Ove possibile, suggerirei di scaricare i file binari ufficiali.
Stennie,

1
Ho avuto lo stesso problema, penso sia perché uso un mongoexport 3.6.4, con mongoDB server 4.0.
Antoine,

Risposte:


13

Sicuramente hai una differenza di versione tra mongodump e il tuo server mongoDB (3.6 contro 4.0).

È possibile utilizzare la finestra mobile per il salvataggio:

docker run --rm -v $(pwd):/workdir/ -w /workdir/ mongo:4.0 mongodump -h server -d $database --out /workdir/dump/

Con la finestra mobile è possibile utilizzare una versione precisa di strumenti cli senza installarla.

Puoi anche specificare un alias (in .bashrc):

alias mongodump="docker run --rm -v $(pwd):/workdir/ -w /workdir/ mongo:4.0 mongodump"

Nota: la cartella in cui viene salvato il dump dovrà disporre delle autorizzazioni di scrittura in modo che l'utente mongodb nel contenitore possa scrivere sul volume montato. Ciò può essere ottenuto impostando manualmente le autorizzazioni nella cartella dump prima di eseguire il comando sopra.

Nell'esempio di cui sopra che sarebbe: mkdir -m 777 dump. Una volta completato il dump, le autorizzazioni possono essere ripristinate su un valore normale (ovvero, sudo chmod 755 dump).


1
Continuo a ricevere l'errore Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied. Ho provato con -u 0e -o /tmp/dump, ma non sono riuscito a farlo funzionare. Alla fine ho finito per avviare un contenitore, eseguire il dump, quindi copiarlo dal contenitore. Qualche idea su dove ho sbagliato con il one-liner?
terzo

1
Devi impostare l'UID in modo appropriato:docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
ltn100,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.