মংডম্প: অপরিচিত ক্ষেত্র 'স্ন্যাপশট'


33

আমি আমার সার্ভারের একটি ব্যাকআপ ডাউনলোড করতে মঙ্গো সরঞ্জামগুলি থেকে মঙ্গোডাম্প ব্যবহার করছি। তবে আমি কমান্ডটি চালানোর সাথে সাথে, কমান্ডটি "অপরিচিত ক্ষেত্র 'স্ন্যাপশট'" ফিরিয়ে দেয়।

সম্পূর্ণ ত্রুটিটি হ'ল:

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

মংডাম্প - রূপান্তর ফেরত:

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
আপনার ও / এস এবং মঙ্গোডিবি সার্ভারের সংস্করণগুলি কী কী? আপনার mongodump --versionআউটপুটটি আপনাকে উত্স থেকে সরঞ্জামগুলি তৈরি করার পরামর্শ দেয়, তাই এটি মঙ্গোডিবি এর কোনও সংস্করণের সাথে সম্পর্কিত হতে পারে তা স্পষ্ট নয়। যেখানে সম্ভব আমি অফিসিয়াল বাইনারিগুলি ডাউনলোড করার পরামর্শ দেব।
স্টেেনি

1
আমি একই সমস্যা পেয়েছি, আমি মনে করি এটি কারণ আমি মঙ্গোএক্সপোর্ট ৩.6.৪ ব্যবহার করি, মঙ্গোডিবি সার্ভার ৪.০ সহ।
এন্টোইন

উত্তর:


13

আপনার মঙ্গোডাম্প বনাম আপনার মঙ্গোডিবি সার্ভারের মধ্যে অবশ্যই পার্থক্য রয়েছে (৩.6 বনাম ৪.০)

আপনি উদ্ধার করতে ডকার ব্যবহার করতে পারেন:

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

ডকারের সাহায্যে আপনি ইনস্টল না করেই সরঞ্জামের ক্লাইমের একটি সুনির্দিষ্ট সংস্করণ ব্যবহার করতে পারেন।

এমনকি আপনি একটি নাম (বাশার্কে) নির্দিষ্ট করতে পারেন:

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

দ্রষ্টব্য: যে ফোল্ডারে ডাম্পটি সংরক্ষণ করা হয়েছে সেখানে লেখার অনুমতি থাকতে হবে যাতে ধারকটিতে থাকা মঙ্গোদব ব্যবহারকারী মাউন্ট ভলিউমে লিখতে পারেন। উপরের কমান্ডটি চালানোর আগে ডাম্প ফোল্ডারে ম্যানুয়ালি অনুমতি সেট করে এটি অর্জন করা যেতে পারে।

যে উপরোক্ত উদাহরণে হবে: 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করতে পারি না। অবশেষে আমি একটি ধারক শুরু করে ডাম্প চালাচ্ছি, তারপরে এটি ধারক থেকে অনুলিপি করছি। ওয়ান-লাইনারের সাথে আমি কোথায় ভুল করেছি এমন কোনও ধারণা?
তৃতীয় দিন

1
আপনার যথাযথভাবে uid সেট করতে হবে:docker run --rm -v $(pwd):/workdir/ -w /workdir/ -u $(id -u) mongo:4.0 mongodump ...
ltn100

55

যোগ --forceTableScan

উদাহরণ:

mongodump --forceTableScan -d database_name -o target_directory

http://aug2uag.blogspot.com/2018/08/mongoexport-unrecognized-field-snapshot.html


এটি আমার পক্ষে কাজ করেছে। ধন্যবাদ
তারং ভালোদিয়া

আপনি দয়া করে ত্রুটিটির অর্থ কী তা ব্যাখ্যা করতে পারেন এবং কেন এই যুক্তি এতটা সহায়তা করে?
F3L1X79
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.