উত্তর:
মাইআইএসএএম এর জন্য অনুলিপি করা খুব সহজ এবং InnoDB এর সাথে সম্পূর্ণ 100% ঝুঁকিপূর্ণ (আত্মঘাতী কাছাকাছি)।
আপনার প্রশ্ন থেকে, আপনি উত্থাপিত হয়েছে
cp /db1/mytable.frm /db2/mytable.frm
এটি করা ঠিক আছে। তবে আপনি কেবল .frm স্থানান্তর করতে পারবেন না। আপনাকে অবশ্যই সমস্ত উপাদান সরিয়ে নিতে হবে। আপনার প্রশ্ন থেকে, আসুন db1.mytable নামে একটি সারণী নেওয়া যাক। একটি সাধারণ ইনস্টলেশন, টেবিলটি / var / lib / mysql / db1 এ অবস্থিত। টেবিল তৈরি করতে তিনটি ফাইল থাকবে।
এক টেবিলটি সরানোর জন্য আপনাকে অবশ্যই তিনটি ফাইল সরিয়ে নিতে হবে। যদি আপনার সমস্ত টেবিলগুলি মাইআইএসএএম স্টোরেজ ইঞ্জিন ব্যবহার করে তবে আপনি মাইএসকিএল বন্ধ করে অনুলিপি করতে পারবেন। আপনি যদি কেবল টেবিলের অনুলিপি তৈরি করে অন্য কোনও ডাটাবেসে রেখে দিচ্ছেন, আপনার এসকিউএল ব্যবহার করে তা করা উচিত।
উদাহরণস্বরূপ, আপনি যদি db1.mytable ডাটাবেস db2 অনুলিপি করতে চান, এটি করুন:
CREATE TABLE db2.mytable LIKE db1.mytable;
ALTER TABLE db2.mytable DISABLE KEYS;
INSERT INTO db2.mytable SELECT * FROM db1.mytable;
ALTER TABLE db2.mytable ENABLE KEYS;
এখন আপনি যদি সারণিটি db1 থেকে db2 তে সরিয়ে ফেলেন তবে আপনি এটি করতে পারেন:
ALTER TABLE db1.mytable RENAME db2.mytable;
অন্নডিবির অধীনে যে পরিকাঠামো কাজ করে সেগুলি অনুলিপি করা খুব বিপজ্জনক। দুটি বুনিয়াদি অবকাঠামো রয়েছে: 1) ইনোডাব_ফিল_পিটার_সামগ্রী অক্ষম এবং 2) ইননোডবি_ফাইলে_ টেকটিবল সক্ষম
ইনোডিবি'র অ্যাকিলিসের হিল হল সিস্টেম টেবিল স্পেস ফাইল যা ইবদাটা 1 (সাধারণত / var / lib / mysql তে থাকে) নামে পরিচিত। এই ফাইলটিতে কী রয়েছে ?
ইনোডোবি_ফাইলে_পার_সামগ্রী অক্ষম থাকায়, এই ধরণের InnoDB তথ্য আইবডাতা 1 এর মধ্যে লাইভ। আইবডাতা 1 এর বাইরে যে কোনও ইনোডিবি টেবিলের একমাত্র প্রকাশ হ'ল ইনোডিবি টেবিলের .frm ফাইল। সমস্ত InnoDB ডেটা একবারে অনুলিপি করার জন্য সমস্ত / var / lib / mysql এর অনুলিপি করতে হবে।
একটি পৃথক InnoDB টেবিল অনুলিপি করা সম্পূর্ণ অসম্ভব। ডাটা এবং এর সাথে সম্পর্কিত সূচক সংজ্ঞাগুলির যৌক্তিক উপস্থাপনা হিসাবে আপনাকে অবশ্যই টেবিলের একটি ডাম্পটি বের করতে মাইএসকিএলডাম্প করতে হবে। আপনি সেই ডাম্পটিকে একই সার্ভার বা অন্য সার্ভারের অন্য একটি ডাটাবেসে লোড করতে পারেন।
ইনোডোবি_ফাইলে_পার_সামগ্রী সক্ষম করে, টেবিল ডেটা এবং এর সূচীগুলি .frm ফাইলের পাশের ডাটাবেস ফোল্ডারে লাইভ করে। উদাহরণস্বরূপ, db1.mytable টেবিলের জন্য, ইবদাটা 1 এর বাইরের সেই InnoDB টেবিলের প্রকাশটি হবে:
Db1.mytable এর জন্য সমস্ত মেটাডেটা এখনও ইবদাটা 1 তে থাকে এবং এর আশেপাশে কোনও উপায় নেই । পুনরায় লগগুলি এবং এমভিসিসি ডেটা এখনও ইবদাটা 1 দিয়ে লাইভ করে।
যদি আপনি কেবল .frm এবং .ibd ফাইলটি অনুলিপি করার কথা ভাবছেন, তবে আপনি আঘাতের জগতের পক্ষে রয়েছেন। InnoDB টেবিলের .frm এবং .ibd ফাইলটি অনুলিপি করা কেবলমাত্র ভাল যদি আপনি গ্যারান্টি দিতে পারেন যে আইবিডিটা 1 ফাইলের মেটাডেটার মধ্যে টেবিলস্পেস আইডি প্রবেশের সাথে .ibd ফাইলের টেবিলস্পেস আইডি ঠিক মেলে।
আমি এই টেবিলস্পেস আইডি ধারণাটি সম্পর্কে ডিবিএ স্ট্যাকএক্সচেঞ্জে দুটি পোস্ট লিখেছি
: এখানে মেলেনি tablespace- র আইডি ঘটনা কিভাবে সংযুক্ত করতে উপর চমৎকার লিঙ্ক এবং ibdata1 করার .ibd ফাইল http://www.chriscalender.com/?tag=innodb-error-tablespace-id-in-file । এটি পড়ার পরে, আপনি কেন আত্মহত্যার কাছাকাছি বলেছিলেন তা দেখতে সক্ষম হওয়া উচিত।
InnoDB এর জন্য আপনার কেবল এটি করা দরকার
CREATE TABLE db2.mytable LIKE db1.mytable;
INSERT INTO db2.mytable SELECT * FROM db1.mytable;
একটি InnoDB টেবিলের একটি অনুলিপি তৈরি করতে। আপনি যদি এটি অন্য ডিবি সার্ভারে স্থানান্তর করে থাকেন তবে মাইএসকিএলডাম্প ব্যবহার করুন।
.frm
, .MYD
এবং .MYI
।
সম্পূর্ণ মাইএসকিউএল ডেটাডির অনুলিপি করা একটি ব্যবহারিক কৌশল, মাইএসকিউএল পরিষেবা বন্ধ হয়ে গেছে এবং আপনি সম্পূর্ণ ডাটাবেস সার্ভার অনুলিপি করতে চান।
এটি বৃহত সূচকের সাথে ডেটাবেস স্থানান্তরিত করার জন্য একটি দরকারী কৌশল, এবং একটি মাইএসকিএল ডাম্প সূচকগুলি অন্তর্ভুক্ত করবে না, যা আমদানির সময় পুনরায় তৈরি করা প্রয়োজন। মাইএসকিউএল ক্রীতদাসগুলি সেট আপ করার সময় আমি এই কৌশলটি দরকারী পেয়েছি।
একটি পৃথক ফাইল অনুলিপি ব্যবহৃত টেবিল স্কিমা উপর নির্ভর করবে, কিন্তু বেশিরভাগ ক্ষেত্রে একটি উপযুক্ত সমাধান না।
ব্যবহার করুন xtrabackup W / Ow W / O innobackupex মোড়কের এবং আপনি উভয় myisam এবং InnoDB ডাটাবেস উপর ঠিক থাকবে। দ্রষ্টব্য, পুনরুদ্ধার করা ইনডোডাব ডাটাবেসগুলি আপনি xtrabackup ব্যবহার করলেও কেবল ফাইলগুলি অনুলিপি করে না। আপনার আরও তথ্যের প্রয়োজন আছে তা বলুন
না, আপনার মাইএসকিড্যাম্পের সাথে ব্যাকআপ নেওয়া উচিত এবং মাইএসকিএল ক্লাইপ ইউটিলিটি সহ পুনরুদ্ধার করা উচিত, আপনি কেবল টেবিলের কাঠামোটি অনুলিপি করছেন এমন ফ্রিএম ফাইলটি অনুলিপি করতে পারেন এবং ভিতরে থাকা ডেটাটি নয়, এবং যদি আপনি ইনডোডব অনুলিপি করেন তবে ফাইলটি সরাসরি সম্ভব নয়।
সেরা উপায় হ'ল ডাম্প এবং টেবিলটি পুনরুদ্ধার করা।