Я использую 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
Возможно, мне нужно понизить версию? В противном случае не уверены, куда идти отсюда ...
mongodump --version
вывод предполагает, что вы создали инструменты из исходного кода, поэтому неясно, какой версии MongoDB может соответствовать. По возможности я бы предложил скачать официальные бинарные файлы.Ответы:
У вас определенно есть разница в версии между mongodump и вашим сервером mongoDB (3.6 против 4.0).
Вы можете использовать докер для спасения:
С докером вы можете использовать точную версию инструментов, не устанавливая ее.
Вы даже можете указать псевдоним (в .bashrc):
Примечание . Папка, в которой сохранен дамп, должна иметь разрешения на запись, чтобы пользователь mongodb в контейнере мог выполнять запись на подключенный том. Это может быть достигнуто путем ручной установки разрешений для папки дампа перед выполнением вышеуказанной команды.
В приведенном выше примере это будет:
mkdir -m 777 dump
. После того, как дамп завершен, разрешения могут быть возвращены в нормальное состояние (т. Е.sudo chmod 755 dump
).источник
Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied
. Я попробовал с-u 0
и-o /tmp/dump
, но не смог заставить его работать. В конце концов я запустил контейнер, запустил дамп и скопировал его из контейнера. Какие-нибудь идеи, где я ошибся с однострочником?docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
Добавлять
--forceTableScan
Пример:
http://aug2uag.blogspot.com/2018/08/mongoexport-unrecognized-field-snapshot.html
источник