Mongodump: нераспознанное поле «снимок»


33

Я использую mongodump из инструментов mongo для загрузки резервной копии моего сервера. Однако, когда я запускаю команду, команда возвращает «Нераспознанное поле« снимок »».

Полная ошибка:

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

Mongodump - версия возвращает:

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

Возможно, мне нужно понизить версию? В противном случае не уверены, куда идти отсюда ...


1
Какие у вас версии O / S и сервера MongoDB? Ваш mongodump --versionвывод предполагает, что вы создали инструменты из исходного кода, поэтому неясно, какой версии MongoDB может соответствовать. По возможности я бы предложил скачать официальные бинарные файлы.
Стенни

1
У меня та же проблема, я думаю, что это потому, что я использую mongoexport 3.6.4, с mongoDB server 4.0.
Антуан

Ответы:


13

У вас определенно есть разница в версии между mongodump и вашим сервером mongoDB (3.6 против 4.0).

Вы можете использовать докер для спасения:

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

С докером вы можете использовать точную версию инструментов, не устанавливая ее.

Вы даже можете указать псевдоним (в .bashrc):

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

Примечание . Папка, в которой сохранен дамп, должна иметь разрешения на запись, чтобы пользователь mongodb в контейнере мог выполнять запись на подключенный том. Это может быть достигнуто путем ручной установки разрешений для папки дампа перед выполнением вышеуказанной команды.

В приведенном выше примере это будет: mkdir -m 777 dump. После того, как дамп завершен, разрешения могут быть возвращены в нормальное состояние (т. Е. sudo chmod 755 dump).


1
Я продолжаю получать ошибку Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied. Я попробовал с -u 0и -o /tmp/dump, но не смог заставить его работать. В конце концов я запустил контейнер, запустил дамп и скопировал его из контейнера. Какие-нибудь идеи, где я ошибся с однострочником?
Третий

1
Вам нужно правильно установить uid:docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
ltn100

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.