Mongodump: 'snapshot' trường không được nhận dạng


33

Tôi đang sử dụng mongodump từ các công cụ mongo để tải xuống bản sao lưu của máy chủ của mình. Tuy nhiên, khi tôi chạy lệnh, lệnh sẽ trả về "trường không được nhận dạng 'snapshot'".

Lỗi đầy đủ là:

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

Mongodump --version trả về:

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

Tôi có thể cần phải hạ cấp phiên bản của tôi? Nếu không thì không biết phải đi đâu từ đây ...


1
Các phiên bản máy chủ O / S và MongoDB của bạn là gì? mongodump --versionĐầu ra của bạn cho thấy bạn đã xây dựng các công cụ từ nguồn, vì vậy không rõ phiên bản MongoDB nào có thể tương ứng. Nếu có thể tôi sẽ đề nghị tải về các nhị phân chính thức.
Stennie

1
Tôi gặp vấn đề tương tự, tôi nghĩ đó là vì tôi sử dụng mongoexport 3.6.4, với máy chủ mongoDB 4.0.
Antoine

Câu trả lời:


13

Bạn chắc chắn có sự khác biệt về phiên bản giữa mongodump so với máy chủ mongoDB của bạn (3.6 so với 4.0).

Bạn có thể sử dụng docker để giải cứu:

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

Với docker, bạn có thể sử dụng một phiên bản chính xác của công cụ cli mà không cần cài đặt nó.

Bạn thậm chí có thể chỉ định một bí danh (trong .bashrc):

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

Lưu ý: Thư mục lưu kết xuất sẽ cần phải có quyền ghi để người dùng mongodb trong vùng chứa có thể ghi vào ổ đĩa được gắn. Điều này có thể đạt được bằng cách cài đặt thủ công các quyền trên thư mục kết xuất trước khi chạy lệnh trên.

Trong ví dụ trên đó sẽ là : mkdir -m 777 dump. Sau khi kết xuất xong, quyền có thể được sửa đổi trở lại bình thường (nghĩa là sudo chmod 755 dump).


1
Tôi tiếp tục nhận được lỗi Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied. Tôi đã thử với -u 0-o /tmp/dump, nhưng không thể làm cho nó hoạt động. Cuối cùng tôi đã bắt đầu một container, chạy bãi rác, sau đó sao chép nó ra khỏi container. Bất kỳ ý tưởng mà tôi đã đi sai với một-liner?
thứ ba

1
Bạn cần đặt uid một cách thích hợp:docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
ltn100

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.