Mongodump : 인식 할 수없는 필드 '스냅 샷'


33

mongoump의 mongodump를 사용하여 서버 백업을 다운로드하고 있습니다. 그러나 명령을 실행하면 "인식 할 수없는 필드 '스냅 샷'"이 반환됩니다.

전체 오류는 다음과 같습니다.

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

Mongodump --version은 다음을 반환합니다.

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의 버전이 힘에 대응 명확하지, 당신은 소스에서 도구를 구축 제안합니다. 가능한 경우 공식 바이너리를 다운로드하는 것이 좋습니다.
Stennie

1
같은 문제가 있는데 mongoDB 서버 4.0과 함께 mongoexport 3.6.4를 사용하기 때문이라고 생각합니다.
Antoine

답변:


13

mongodump와 mongoDB 서버 (3.6 vs 4.0)의 버전이 확실히 다릅니다.

도커를 사용하여 구조 할 수 있습니다.

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

docker를 사용하면 설치하지 않고도 정확한 버전의 도구를 사용할 수 있습니다.

.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있지만,이 일을 가져올 수 없습니다. 마침내 컨테이너를 시작하고 덤프를 실행 한 다음 컨테이너에서 복사했습니다. 하나의 라이너로 잘못 된 아이디어가 있습니까?
thirdender

1
uid를 적절하게 설정해야합니다.docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
ltn100

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.