কিভাবে পিএইচপি ব্যবহার করে মঙ্গোডিবি ডাটাবেসগুলি অনুলিপি করবেন এখন যে কপিরডিবি হ্রাস পেয়েছে


10

মঙ্গোডিবি সংস্করণে ৪.২ copydbএবং এর copyDatabaseমোড়কটিকে হ্রাস করা হয়েছে। মঙ্গোডিবি ম্যানুয়াল পরামর্শ দেয় যে আমাদের এখন ব্যবহার করা উচিত mongodumpএবং mongorestore। তবে আমি পিএইচপি থেকে কপি কমান্ডটি কল করছিলাম পিএইচপি মঙ্গোডিবি ড্রাইভার এবং ডাম্প এবং পুনরুদ্ধার কমান্ডগুলি হ'ল আদেশগুলি যা কমান্ড লাইন থেকে চালানো দরকার এবং কোনও পিএইচপি সমতুল্য নয়। আমি এখন পিএইচপি ব্যবহার করে একটি ডাটাবেস অনুলিপি করতে পারি?


1
এমনকি শেল_এক্সেক ধরণের ফাংশন সহ পিএইচপি থেকে মঙ্গোডাম্প / মংগেরস্টোর চালানো সম্ভব, ক্লায়েন্টের কাছে পুরো ডাটাবেস ডাউনলোড করা এবং তারপরে এটি আবার আপলোড করা খুব কমই সম্ভব as
অ্যালেক্স ব্লেক্স

আমার ধারণা আমি আপনার কাজের প্রবাহ বুঝতে পারি না। আপনি কি কেবল মেশিনে একটি ডিবি ব্যাকআপ / পুনরুদ্ধার তৈরি করতে চান বা কোনও ওয়েবসাইট / পরিষেবা (পিএইচপি এর মাধ্যমে) এর মাধ্যমে আপ / ডাউনলোড করতে চান?
mrgremlin

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

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

উত্তর:


3

আপনি যেমনটি উল্লেখ করেছেন তেমন আপনি "মঙ্গোডাম্প" এবং "মঙ্গোস্টোর" ব্যবহার করতে পারেন। পিএইচপি-তে, কমান্ডগুলি চালাতে আপনি শেল_এক্সেক ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

$backUpCommand = "mongodump --archive='/tmp/mongodump-dev-db' --db=dev";
shell_exec($backUpCommand);

$restoreCommand = "mongorestore --archive='/tmp/mongodump-dev-db' --db=test --nsFrom='test.*' --nsTo='examples.*'";
shell_exec($restoreCommand);

অনুগ্রহ করে নোট করুন এনএস থেকে এবং এনএসটি আপনার প্রয়োজন হলে নেমস্পেসের নাম পরিবর্তন করতে হবে। আরও বিশদ এখানে দেখুন

আপনি যদি অন্য হোস্টে ডাম্পটি অনুলিপি করতে চান তবে মংগেরস্টোরের - হোস্ট প্যারামগুলি একত্রিত করার চেষ্টা করুন। সুতরাং, সেক্ষেত্রে আপনার পুনরুদ্ধার আদেশটি হ'ল:

$restoreCommand = "mongorestore --host=mongodb1.example.net --port=27017 --username=user --password=$PSWD --authenticationDatabase=admin --archive='/tmp/mongodump-dev-db' --db=test";
shell_exec($restoreCommand);

1
এটি সম্ভব তবে এটি বাহ্যিক সিএলআই নির্ভরতাগুলির সাথে অ্যাপ্লিকেশন সেটআপটিকে জটিলভাবে জটিল করে তোলে, ডাটাবেসটি ডাম্প করার জন্য সমস্ত অ্যাপ্লিকেশন সার্ভারগুলিতে উল্লেখযোগ্য এসডিডি স্পেস সংরক্ষণ করতে হবে (একযোগে অনুরোধের ক্ষেত্রে একাধিক বার), এতে ডেটা স্থানান্তর ব্যয় হবে এবং বেশিরভাগ ক্ষেত্রে হতে পারে মন্থর। অন্য কথায় - এটি এক-অফ ম্যানুয়াল কাজ হিসাবে ঠিক আছে তবে উত্পাদন সিস্টেমের জন্য নয়।
অ্যালেক্স ব্লেক্স

অ্যালেক্স ব্লেক্সের সাথে সম্মত হন। এই "সমাধান" পূর্ববর্তী বিকল্পের তুলনায় মাত্র 100% বেশি জটিল
কার্লোস গ্রানাডোস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.