Mongodump: Tanınmayan alan 'anlık görüntüsü'


33

Sunucumun bir yedeğini indirmek için mongo araçlarındaki mongodump kullanıyorum. Ancak komutu çalıştırdığımda, komut "Tanınmayan alan" anlık görüntü "" ifadesini döndürüyor.

Tam hata:

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

Mongodump --version döner:

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

Sürümümü düşürmem gerekebilir mi? Aksi takdirde buradan nereye gideceğinizden emin değilseniz ...


1
O / S ve MongoDB sunucusu sürümleriniz nelerdir? Sizin mongodump --versionçıkış yüzden ne MongoDB sürümü olduğu kudreti tekabül için belli değil, sen kaynağından araçları inşa öne sürüldü. Mümkünse resmi ikili dosyaları indirmenizi öneririm.
Stennie

1
Aynı sorunu anladım, çünkü mongoDB sunucusu 4.0 ile bir mongoexport 3.6.4 kullanıyorum.
Antoine,

Yanıtlar:


13

Kesinlikle mongodump vs mongoDB sunucunuz (3.6 vs 4.0) arasında sürüm farkınız var.

Kurtarıcıyı liman işçisi kullanabilirsiniz:

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

Docker ile, cli aracını yüklemeden kesin bir sürümünü kullanabilirsiniz.

Hatta bir takma ad belirleyebilirsiniz (.bashrc'de):

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

Not: Dökümün kaydedildiği klasörün yazma izinlerine sahip olması gerekir, böylece konteynırdaki mongodb kullanıcısı monte edilen birime yazabilir. Bu, yukarıdaki komutu çalıştırmadan önce döküm klasörü üzerindeki izinleri el ile ayarlayarak elde edilebilir.

Yukarıdaki örnekte olacaktır: mkdir -m 777 dump. Dökümü tamamlandıktan sonra izinler normale döndürülebilir (yani sudo chmod 755 dump).


1
Ben hatayı alıyorum Failed: error dumping metadata: error creating directory for metadata file dump/{COLLECTION}: mkdir dump: permission denied. İle denedim -u 0ve -o /tmp/dump, ancak işe alamadı. Sonunda bir konteynırı çalıştırdım, çöplüğü çalıştırdım, sonra konteynırdan kopyaladım. Tek gömlekle yanlış yaptığım herhangi bir fikrin var mı?
18'de,

1
Kullanıcıyı uygun şekilde ayarlamanız gerekir:docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
ltn100

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.