Mongodump: Field 'snapshot' yang tidak dikenal


33

Saya menggunakan mongodump dari alat mongo untuk mengunduh cadangan server saya. Namun saat saya menjalankan perintah, perintah mengembalikan "Bidang 'snapshot'" yang tidak dikenal.

Kesalahan penuh adalah:

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

Mongodump --versi pengembalian:

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

Saya mungkin perlu menurunkan versi versi saya? Kalau tidak yakin ke mana harus pergi dari sini ...


1
Apa versi server O / S dan MongoDB Anda? mongodump --versionOutput Anda menunjukkan Anda telah membangun alat dari sumber, jadi tidak jelas versi MongoDB apa yang sesuai. Jika memungkinkan saya akan menyarankan mengunduh binari resmi.
Stennie

1
Saya mendapat masalah yang sama, saya pikir itu karena saya menggunakan mongoexport 3.6.4, dengan server mongoDB 4.0.
Antoine

Jawaban:


13

Anda tentu memiliki perbedaan versi antara mongodump vs server mongoDB Anda (3,6 vs 4.0).

Anda dapat menggunakan buruh pelabuhan untuk menyelamatkan:

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

Dengan buruh pelabuhan Anda dapat menggunakan versi yang tepat dari alat-alat CLI tanpa menginstalnya.

Anda bahkan dapat menentukan alias (dalam .bashrc):

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

Catatan: Folder tempat dump disimpan harus memiliki izin menulis sehingga pengguna mongodb dalam wadah dapat menulis ke volume yang dipasang. Ini dapat dicapai dengan secara manual mengatur izin pada folder dump sebelum menjalankan perintah di atas.

Dalam contoh di atas yang akan: mkdir -m 777 dump. Setelah dump selesai maka izin dapat diubah kembali menjadi normal (yaitu, sudo chmod 755 dump).


1
Saya terus mendapatkan kesalahan Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied. Saya mencoba -u 0dan -o /tmp/dump, tetapi tidak berhasil. Saya akhirnya memulai wadah, menjalankan tempat sampah, lalu menyalinnya dari wadah. Adakah ide yang salah dengan one-liner?
Thirdender

1
Anda perlu mengatur uid dengan tepat:docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
ltn100

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.