মঙ্গোডিবিতে স্থান পুনরুদ্ধার নিয়ে কিছুটা বিভ্রান্তি দেখা দিয়েছে এবং কিছু প্রস্তাবিত অনুশীলন নির্দিষ্ট স্থাপনার ধরণের ক্ষেত্রে নিখুঁতভাবে বিপজ্জনক। নীচে আরও বিশদ:
টিএল; ডিআর repairDatabase একটি ডিস্ক দুর্নীতি থেকে পুনরুদ্ধার করার চেষ্টা করছে এমন একক মোংগোডিবি মোতায়েন থেকে ডেটা উদ্ধার করার চেষ্টা করে। যদি এটি স্থান পুনরুদ্ধার করে তবে এটি সম্পূর্ণরূপে একটি পার্শ্ব প্রতিক্রিয়া । স্থান পুনরুদ্ধার কখনও চলমান প্রাথমিক বিবেচনা করা উচিত নয় repairDatabase।
স্ট্যান্ডেলোন নোডে স্থান পুনরুদ্ধার করুন
ওয়্যার্ডটাইগার: ওয়্যার্ডটাইগার সহ স্ট্যান্ডেলোন নোডের জন্য, চলমান একটি ক্যাভ্যাট সহ ওএসে compactস্থান ছেড়ে দেবে: compactমংডোডিবি 3.0.x-এ ওয়্যার্ডটাইজারের কমান্ডটি এই বাগ দ্বারা প্রভাবিত হয়েছিল: সার্ভার -21833 যা মঙ্গোডিবি 3.2.3 - এ স্থির করা হয়েছিল। এই সংস্করণের আগে, compactওয়্যার্ডটাইগারে চুপচাপ ব্যর্থ হতে পারে।
এমএমএএপভি 1: এমএমএএপিভি 1 কাজ করার কারণে, এমএমএপিভি 1 স্টোরেজ ইঞ্জিন ব্যবহার করে স্থান পুনরুদ্ধার করার জন্য নিরাপদ এবং সমর্থিত কোনও পদ্ধতি নেই। compactএমএমএপিভি 1 তে ডেটা ফাইলগুলিকে ডিফ্র্যাগমেন্ট করবে, সম্ভাব্যভাবে নতুন ডকুমেন্টগুলির জন্য আরও বেশি জায়গা উপলব্ধ করবে, তবে এটি ওএসে স্থান ছেড়ে দেবে না।
আপনি পারে চালাতে সক্ষম হবেন repairDatabaseযদি আপনি সম্পূর্ণরূপে এই কাজটির ফলাফল কী বিপদজনক কমান্ড (নিচে দেখুন), যেহেতুrepairDatabase মূলত দুর্নীতিগ্রস্ত নথি খারিজ পুরো ডাটাবেসের নতুন করে লেখা হয়। পার্শ্ব প্রতিক্রিয়া হিসাবে, এটি নতুন এমএমএপিভি 1 ডেটা ফাইল তৈরি করবে এতে কোনও বিভাজন ছাড়াই ওএসে স্থান ছেড়ে দেবে।
কম দু: সাহসিক পদ্ধতির জন্য, চলমান mongodumpএবং আপনার mongorestoreএমএমএপিভি 1 স্থাপনার পাশাপাশি আপনার স্থাপনার আকারের সাপেক্ষে এটিও সম্ভব হতে পারে।
একটি প্রতিরূপ সেটে স্থান পুনরুদ্ধার করুন
প্রতিরূপ সেট কনফিগারেশনের জন্য, স্থান পুনরুদ্ধার করার জন্য সর্বোত্তম এবং নিরাপদ পদ্ধতিটি একটি প্রাথমিক সিঙ্ক করা ওয়্যার্ডটাইগার এবং এমএমএপিভি 1 উভয়ের জন্য ।
আপনার যদি সেটের সমস্ত নোড থেকে স্থানটি পুনরুদ্ধার করতে হয় তবে আপনি রোলিং প্রাথমিক সিঙ্ক করতে পারেন। এটি হ'ল, প্রতিটি সেকেন্ডারিতে প্রাথমিক সিঙ্ক সম্পাদন করুন, অবশেষে প্রাথমিক পদক্ষেপ নেওয়ার আগে এবং এতে প্রাথমিক সিঙ্ক সম্পাদন করুন। প্রাথমিক সিঙ্ক পদ্ধতি রোলিং করা প্রতিলিপি সেট রক্ষণাবেক্ষণ সম্পাদন করার জন্য সবচেয়ে নিরাপদ পদ্ধতি এবং এটি বোনাস হিসাবে কোনও ডাউনটাইমও জড়িত না।
দয়া করে নোট করুন যে রোলিং প্রাথমিক সিঙ্ক করার সম্ভাব্যতাও আপনার স্থাপনার আকারের উপর নির্ভর করে। অত্যন্ত বড় মোতায়েনের জন্য, প্রাথমিক সিঙ্ক করা সম্ভব হবে না এবং এইভাবে আপনার বিকল্পগুলি কিছুটা সীমাবদ্ধ। WiredTiger ব্যবহার করা হয়, তাহলে আপনি পারে সেট এক মাধ্যমিক খুঁজে নিতে, একটি স্বতন্ত্র, চালানো যেমন শুরু করতে পারবেন compactএটা, এবং সেট থেকে এটি পুনরায় যুক্ত।
সংক্রান্ত repairDatabase
অনুগ্রহ repairDatabaseকরে রেপ্লিকা সেট নোডগুলিতে চলবেন না । এটি খুব বিপজ্জনক, যেমন মেরামত ডেটাবেস পৃষ্ঠায় উল্লিখিত হয়েছে নীচে আরও বিশদে বিবৃত।
নামটি repairDatabaseকিছুটা বিভ্রান্তিকর, যেহেতু আদেশটি কোনও কিছুর মেরামত করার চেষ্টা করে না। স্বতন্ত্র নোডে ডিস্ক দুর্নীতি হলে কমান্ডটি ব্যবহার করার উদ্দেশ্যে তৈরি করা হয়েছিল , যার ফলে নথি নষ্ট হয়ে যেতে পারে।
repairDatabaseকমান্ড আরো নিখুঁতভাবে হিসাবে "স্যালভেজ ডেটাবেস" বর্ণনা করা যেতে পারে। এটি হ'ল এটি ডেটাবেসগুলিকে এমন একটি স্থানে আনার প্রয়াসে দুর্নীতিগ্রস্ত দলিলগুলি ত্যাগ করে ডাটাবেসগুলি পুনরায় তৈরি করে যেখানে আপনি এটি শুরু করতে পারেন এবং এটি থেকে অক্ষত নথি উদ্ধার করতে পারেন।
এমএমএএপিভি 1 মোতায়েনের মধ্যে, ডাটাবেস ফাইলগুলির এই পুনর্নির্মাণটি ওএসের পার্শ্ব প্রতিক্রিয়া হিসাবে স্থান প্রকাশ করে । ওএসে স্থান ছেড়ে দেওয়া কখনই উদ্দেশ্য ছিল না।
ফল repairDatabaseএকটি প্রতিরূপ সেট
একটি প্রতিরূপ সেটে, মঙ্গোডিবি আশা করে যে সেটের সমস্ত নোড অভিন্ন ডেটা রাখবে। যদি আপনি repairDatabaseএকটি প্রতিরূপ সেট নোড চালনা করেন তবে নোডে অনির্দিষ্ট দুর্নীতি রয়েছে এবং repairDatabaseডিউটিলিটি আপনার জন্য দূষিত দলিলগুলি সরিয়ে ফেলবে এমন সম্ভাবনা রয়েছে ।
অনুমানযোগ্যভাবে, এটি নোডে বাকি সেট থেকে আলাদা একটি ডেটাসেট ধারণ করে ase কোনও আপডেটে যদি সেই একক দস্তাবেজটি আঘাত হানে তবে পুরো সেটটি ক্রাশ হতে পারে।
বিষয়টিকে আরও খারাপ করার পক্ষে, এটি পুরোপুরি সম্ভব যে এই পরিস্থিতি দীর্ঘ সময়ের জন্য সুপ্ত থাকতে পারে, কেবল কোনও আপাত কারণ ছাড়াই হঠাৎ ধর্মঘট করতে হবে।