মাইএসকিউএল কেন এই ফাইলগুলি দেখতে পারে না তা এখানে রয়েছে: সিস্টেম টেবিল স্পেসে (আইবডাটা 1) একটি স্টোরেজ-ইঞ্জিন নির্দিষ্ট ডেটা ডিকশনারি রয়েছে যা ইনোডিবিএকে সম্ভাব্য সারণীর ব্যবহারের মানচিত্রটি দেয়:
InnoDB টেবিলগুলি এক জায়গা থেকে অন্য জায়গায় সরিয়ে নিতে যেমন কমান্ডের প্রয়োজন হয়
ALTER TABLE tblname DISCARD TABLESPACE;
ALTER TABLE tblname IMPORT TABLESPACE;
এখানে কী বিবেচনা করা উচিত তা ব্যাখ্যা করে মাইএসকিউএল 5.5 ডকুমেন্টেশনের একটি অংশ রয়েছে
.Ibd ফাইলগুলির জন্য বহনযোগ্যতার বিবেচনা
আপনি মাইআইএসএএম টেবিল ফাইলগুলির সাহায্যে অবিচ্ছিন্নভাবে .ibd ফাইলগুলি ডাটাবেস ডিরেক্টরিগুলির মধ্যে স্থানান্তর করতে পারবেন না। InnoDB ভাগ করা টেবিল স্পেসে সারণী সংজ্ঞাটি ডাটাবেসের নাম অন্তর্ভুক্ত করে। টেবিলস্পেস ফাইলগুলিতে সঞ্চিত লেনদেন আইডি এবং লগ সিকোয়েন্স নম্বরগুলি ডাটাবেসের মধ্যেও পৃথক।
একটি .ibd ফাইল এবং সম্পর্কিত টেবিলটি একটি ডাটাবেস থেকে অন্য ডাটাবেসে স্থানান্তর করতে, একটি পুনরায় নাম টেবিল বিবৃতি ব্যবহার করুন:
পুনরায় নাম টেবিল db1.tbl_name TO db2.tbl_name; আপনার যদি একটি .আইবিডি ফাইলের "ক্লিন" ব্যাকআপ থাকে তবে আপনি এটিকে মাইএসকিউএল ইনস্টলেশনটিতে পুনরুদ্ধার করতে পারেন যা থেকে এটি নীচে সূচিত হয়েছিল:
আপনি .ibd ফাইলটি অনুলিপি করার পরে টেবিলটি অবশ্যই ফেলে দেওয়া বা কাটা উচিত নয়, কারণ এটি করার ফলে টেবিল স্পেসের ভিতরে থাকা সারণী আইডি পরিবর্তন হয়।
বর্তমান .ibd ফাইলটি মুছতে এই টেবিল স্টেটমেন্টটি জারি করুন:
টেবিলের পরিবর্তে tbl_name ডিস্কার্ড ট্যাবলেট স্পেস করুন; সঠিক ডাটাবেস ডিরেক্টরিতে ব্যাকআপ .ibd ফাইলটি অনুলিপি করুন।
InnoDB কে টেবিলের জন্য নতুন .ibd ফাইলটি ব্যবহার করতে বলার জন্য এই ALL TABLE বিবৃতিটি জারি করুন:
টেবিল পরিবর্তন করুন tbl_name আমদানি ট্যাবলেট স্পেস; এই প্রসঙ্গে, একটি "ক্লিন" .আইবিডি ফাইল ব্যাকআপ হ'ল যার জন্য নিম্নলিখিত প্রয়োজনীয়তাগুলি সন্তুষ্ট:
.Bd ফাইলে লেনদেনের মাধ্যমে কোনও আপত্তিজনক পরিবর্তন নেই।
.Ibd ফাইলে কোনও নিমজ্জিত sertোকানো বাফার এন্ট্রি নেই।
পুর্ব .ibd ফাইল থেকে মুছে ফেলা সমস্ত চিহ্নিত সূচি রেকর্ড সরিয়ে ফেলেছে।
mysqld বাফার পুল থেকে ফাইলটি .ibd ফাইলের সমস্ত পরিবর্তিত পৃষ্ঠাগুলি ফ্লাশ করেছে।
এই সাবধানতা এবং প্রোটোকল দেওয়া, এখানে কর্মের একটি প্রস্তাবিত কোর্স
এই উদাহরণস্বরূপ, আসুন ডাটাবেসে tags
টেবিলটি পুনরুদ্ধার করার চেষ্টা করিmydb
ধাপ 1
আপনার সেগুলিতে .frm
এবং .ibd
ফাইলগুলির ব্যাকআপ রয়েছে তা নিশ্চিত করুন/tmp/innodb_data
ধাপ ২
CREATE TABLE tags
বিবৃতিটি পান এবং এটি কার্যকর করুন CREATE TABLE mydb.tags ...
। নিশ্চিত করুন যে এটি আসলটির মতো একই কাঠামোtags.frm
ধাপ 3
tags.ibd
মাইএসকিউএল ব্যবহার করে খালি মুছুন
ALTER TABLE mydb.tags DISCARD TABLESPACE;
পদক্ষেপ # 4
এর ব্যাকআপ কপিটি নিয়ে আসুন tags.ibd
cd /var/lib/mysql/mydb
cp /tmp/innodb_data.tags.ibd .
chown mysql:mysql tags.ibd
পদক্ষেপ # 5
tags
InnoDB ডেটা অভিধানে টেবিল যুক্ত করুন
ALTER TABLE mydb.tags IMPORT TABLESPACE;
পদক্ষেপ 6
টেবিলের অ্যাক্সেসযোগ্যতা পরীক্ষা করুন
SHOW CREATE TABLE mydb.tags\G
SELECT * FROM mydb.tags LIMIT 10;
আপনি যদি সাধারণ ফলাফল পান তবে অভিনন্দন আপনি একটি ইনোডিবি টেবিল আমদানি করেন।
পদক্ষেপ 7
ভবিষ্যতে, দয়া করে আইবডাটা 1 এবং এর লগগুলি মুছবেন না
একবার চেষ্টা করে দেখো !!!
আমি এর আগেও এরকম বিষয় নিয়ে আলোচনা করেছি
বিচারকার্য স্থগিত রাখার আদেশ
আপনি যদি টেবিলের কাঠামোটি জানেন না tags
?
স্রেফ .frm
ফাইলটি ব্যবহার করে ক্রেট টেবিল স্টেটমেন্ট পাওয়ার সরঞ্জাম রয়েছে । আমি এ সম্পর্কে একটি পোস্টও লিখেছিলাম: কীভাবে কেবল .frm ফাইল থেকে টেবিলের স্কিমা বের করা যায়? । সেই পোস্টে, আমি একটি লিনাক্স বাক্স থেকে একটি উইন্ডোজ মেশিনে .frm ফাইলটি অনুলিপি করেছিলাম, উইন্ডোজ সরঞ্জামটি চালিয়েছিলাম এবং CREATE TABLE
বিবৃতি পেয়েছি ।