Mongodump: campo 'instantánea' no reconocido


33

Estoy usando mongodump de mongo tools para descargar una copia de seguridad de mi servidor. Sin embargo, cuando ejecuto el comando, el comando devuelve "campo 'instantánea' no reconocido".

El error completo es:

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

Mongodump: la versión devuelve:

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

¿Podría necesitar degradar mi versión? De lo contrario, no estoy seguro de a dónde ir desde aquí ...


1
¿Cuáles son sus versiones del servidor O / S y MongoDB? Su mongodump --versionresultado sugiere que ha creado las herramientas desde la fuente, por lo que no es obvio a qué versión de MongoDB podría corresponder. Siempre que sea posible, sugeriría descargar los binarios oficiales.
Stennie

1
Tengo el mismo problema, creo que es porque uso un mongoexport 3.6.4, con mongoDB server 4.0.
Antoine

Respuestas:


13

Ciertamente tiene una diferencia de versión entre mongodump y su servidor mongoDB (3.6 y 4.0).

Puedes usar Docker para el rescate:

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

Con Docker puede usar una versión precisa de herramientas cli sin instalarlo.

Incluso puede especificar un alias (en .bashrc):

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

Nota: La carpeta donde se guarda el volcado necesitará tener permisos de escritura para que el usuario mongodb en el contenedor pueda escribir en el volumen montado. Esto se puede lograr configurando manualmente los permisos en la carpeta de volcado antes de ejecutar el comando anterior.

En el ejemplo anterior que sería: mkdir -m 777 dump. Una vez que se completa el volcado, los permisos se pueden volver a modificar a normal (es decir, sudo chmod 755 dump).


1
Sigo recibiendo el error Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied. Lo intenté con -u 0y -o /tmp/dump, pero no pude hacerlo funcionar. Finalmente terminé iniciando un contenedor, ejecutando el volcado y luego copiándolo del contenedor. ¿Alguna idea de dónde me equivoqué con el one-liner?
Thirdender

1
docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
Debe

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.