MyISAM
एक MyISAM तालिका mydb.mytable के लिए, आपके पास तीन फाइलें होनी चाहिए
\bin\mysql\mysql5.6.12\data\mydb\mytable.frm
\bin\mysql\mysql5.6.12\data\mydb\mytable.MYD
\bin\mysql\mysql5.6.12\data\mydb\mytable.MYI
उन्हें पहले से ही एक तालिका के रूप में सुलभ होना चाहिए क्योंकि प्रत्येक फ़ाइल में आवश्यक डेटा, मेटाडेटा और इंडेक्स जानकारी शामिल है। सामूहिक रूप से, वे तालिका बनाते हैं। उपयोग करने के लिए कोई बाहरी भंडारण इंजन mecahnism नहीं हैं।
InnoDB
InnoDB के इस सचित्र प्रतिनिधित्व पर एक नज़र डालें
.ibd
फ़ाइलों के लिए ibdata1 संलग्न करने वाली एकमात्र चीज़ डेटा शब्दकोश है।
आपका मिशन, क्या आपको इसे स्वीकार करने का निर्णय लेना चाहिए, प्रत्येक तालिका बनाना और इसमें स्वैप करना है .ibd
इससे पहले कि आप कुछ भी करें, दूसरे को "\ bin \ mysql \ mysql5.6.12 \ data" की पूरी प्रतिलिपि बनाएँ
यहाँ एक नमूना है
मान लीजिए कि आपके पास mydb
तालिका के साथ एक डेटाबेस है mytable
। इसका मतलब है की
- आपके पास फोल्डर है
\bin\mysql\mysql5.6.12\data\mydb
- उस फ़ोल्डर के अंदर, आपके पास है
आपको चाहिए .frm
। यदि आप मेरी पोस्ट को देखते हैं तो सिर्फ .frm फ़ाइल से टेबल स्कीमा कैसे निकाल सकते हैं? , आप एक MySQL उपयोगिता डाउनलोड कर सकते हैं जो तालिका बनाने के लिए आवश्यक SQL उत्पन्न कर सकती है।
अब आपको निम्नलिखित करना चाहिए
- को स्थानांतरित
mytable.ibd
करें\bin\mysql\mysql5.6.12\data
- InnoDB तालिका बनाने के लिए SQL चलाएँ
- Mysql में लॉगिन करें और चलाएं
ALTER TABLE mydb.mytable DISCARD TABLESPACE;
(यह हटा देगा \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
)
- कॉपी
\bin\mysql\mysql5.6.12\data\mytable.ibd
में\bin\mysql\mysql5.6.12\data\mydb
- Mysql में लॉगिन करें और चलाएं
ALTER TABLE mydb.mytable IMPORT TABLESPACE;
(यह \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
डेटा शब्दकोश में पंजीकृत होगा )
इसके बाद, तालिका mydb.mytable
पूरी तरह से सुलभ होनी चाहिए। आप बस चलाकर उस पहुंच को परख सकते हैं:
SELECT * FROM mydb.mytable LIMIT 10;
कोशिश करो !!!
DRINK (डेटा रिकवरी आवश्यक रूप से आवश्यक ज्ञान शामिल करता है)