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í ...
mongodump --version
resultado 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.Respuestas:
Ciertamente tiene una diferencia de versión entre mongodump y su servidor mongoDB (3.6 y 4.0).
Puedes usar Docker para el rescate:
Con Docker puede usar una versión precisa de herramientas cli sin instalarlo.
Incluso puede especificar un alias (en .bashrc):
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
).fuente
Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied
. Lo intenté con-u 0
y-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?docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
Añadir
--forceTableScan
Ejemplo:
http://aug2uag.blogspot.com/2018/08/mongoexport-unrecognized-field-snapshot.html
fuente