Korzystam z mongodump z narzędzi mongo, aby pobrać kopię zapasową mojego serwera. Jednak po uruchomieniu polecenia polecenie zwraca „Nierozpoznane pole„ migawka ”.
Pełny błąd to:
Failed: error reading collection: Failed to parse: { find: "data", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "xxx" }. Unrecognized field 'snapshot'.
Mongodump --version zwraca:
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
Może być konieczne obniżenie wersji mojej wersji? W przeciwnym razie nie wiesz, dokąd się udać ...
mongodump --version
wynik sugeruje, że zbudowałeś narzędzia ze źródła, więc nie jest oczywiste, która wersja MongoDB może odpowiadać. Tam, gdzie to możliwe, sugeruję pobranie oficjalnych plików binarnych.Odpowiedzi:
Z pewnością masz różnicę wersji między mongodump a twoim serwerem mongoDB (3.6 vs 4.0).
Możesz użyć dokera na ratunek:
Dzięki dokerowi możesz używać precyzyjnej wersji narzędzi cli bez jej instalowania.
Możesz nawet podać alias (w .bashrc):
Uwaga: folder, w którym zapisany jest zrzut, musi mieć uprawnienia do zapisu, aby użytkownik mongodb w kontenerze mógł zapisywać na zamontowanym woluminie. Można to osiągnąć ręcznie ustawiając uprawnienia do folderu zrzutu przed uruchomieniem powyższego polecenia.
W powyższym przykładzie, że będzie:
mkdir -m 777 dump
. Po zakończeniu zrzutu uprawnienia można przywrócić do normalnego (tjsudo chmod 755 dump
.).źródło
Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied
. Próbowałem z-u 0
i-o /tmp/dump
, ale nie udało mi się go uruchomić. W końcu skończyłem z uruchomieniem kontenera, uruchomieniem zrzutu, a następnie skopiowaniem go z kontenera. Jakieś pomysły, w których popełniłem błąd w przypadku jednego linera?docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
Dodaj
--forceTableScan
Przykład:
http://aug2uag.blogspot.com/2018/08/mongoexport-unrecognized-field-snapshot.html
źródło