कैसे से मेरी MySQL डेटाबेस में से एक को बहाल करने .myd
, .myi
, .frm
फ़ाइलें?
कैसे से मेरी MySQL डेटाबेस में से एक को बहाल करने .myd
, .myi
, .frm
फ़ाइलें?
जवाबों:
यदि ये MyISAM टेबल हैं, तो .FRM, .MYD, और .MYI फ़ाइलों को एक डेटाबेस डायरेक्टरी (जैसे, /var/lib/mysql/dbname
) में डालकर उस टेबल को उपलब्ध कराएँगे । यह वैसा ही डेटाबेस होना जरूरी नहीं है जैसा कि वे आए थे, एक ही सर्वर, एक ही MySQL संस्करण, या समान वास्तुकला। आपको फ़ोल्डर के लिए स्वामित्व बदलने की भी आवश्यकता हो सकती है (जैसे, chown -R mysql:mysql /var/lib/mysql/dbname
)
ध्यान दें कि अनुमतियाँ ( GRANT
आदि) mysql
डेटाबेस का हिस्सा हैं । इसलिए उन्हें तालिकाओं के साथ बहाल नहीं किया जाएगा; आपको GRANT
उपयोगकर्ताओं को बनाने, एक्सेस देने आदि के लिए उपयुक्त स्टेटमेंट चलाने की आवश्यकता हो सकती है ( mysql
डेटाबेस को पुनर्स्थापित करना संभव है, लेकिन आपको MySQL संस्करणों और mysql_upgrade
उपयोगिता के किसी भी आवश्यक रन के साथ सावधान रहने की आवश्यकता है ।)
दरअसल, आपको शायद सिर्फ .FRM (टेबल स्ट्रक्चर) और .MYD (टेबल डेटा) की जरूरत है, लेकिन आपको .MYI (इंडेक्स) के पुनर्निर्माण के लिए टेबल की मरम्मत करनी होगी।
एकमात्र बाधा यह है कि यदि आप अपग्रेड कर रहे हैं, तो आप रिलीज़ नोट्स (और शायद मरम्मत तालिका चलाते हैं) की सबसे अच्छी जाँच करेंगे। नए MySQL संस्करण निश्चित रूप से सुविधाएँ जोड़ते हैं।
[हालांकि यह स्पष्ट होना चाहिए, यदि आप तालिकाओं को मिलाते हैं और मेल खाते हैं, तो उन तालिकाओं के बीच संबंधों की अखंडता आपकी समस्या है; MySQL परवाह नहीं करेगा, लेकिन आपके आवेदन और आपके उपयोगकर्ताओं को हो सकता है। इसके अलावा, यह विधि InnoDB तालिकाओं के लिए बिल्कुल भी काम नहीं करती है। केवल MyISAM, लेकिन आपके पास मौजूद फ़ाइलों को देखते हुए, आपके पास MyISAM है]
check table sometable;
चलाने की आवश्यकता है : और फिर मरम्मत (केवल यदि आवश्यक हो) चलाने के लिए: repair table sometable;
मैंने बस इसके समाधान के लिए खोज की। मैं विंडोज 7 पर MySQL 5.1 या 5.6 का उपयोग कर रहा हूं।
इस पुनर्प्राप्ति के लिए .MYI और .MYD फ़ाइल का पता लगाने की आवश्यकता नहीं है।
innodb_force_recovery = 4
स्तर का उपयोग किया (यह सुनिश्चित नहीं है कि इस मामले में आवश्यक था)। राम - राम!
ibdata1
InnoDB है, MyISAM नहीं।
एक बात ध्यान दें:
.FRM फ़ाइल में आपकी तालिका संरचना है, और यह आपके MySQL संस्करण के लिए विशिष्ट है।
.MYD फ़ाइल संस्करण के लिए विशिष्ट नहीं है, कम से कम मामूली संस्करण नहीं।
.MYI फ़ाइल विशिष्ट है, लेकिन REPAIR TABLE
दूसरे उत्तरों की तरह ही इसे छोड़ दिया और पुनर्जीवित किया जा सकता है ।
इस उत्तर का मतलब आपको यह बताना है कि यदि आपके पास अपनी तालिकाओं का एक स्कीमा डंप है, तो आप इसका उपयोग तालिका संरचना को उत्पन्न करने के लिए कर सकते हैं, फिर उन .MYD फ़ाइलों को अपने बैकअप के साथ बदलें, MYI फ़ाइलों को हटाएं, और उनकी मरम्मत करें। सब। इस तरह आप अपने बैकअप को किसी अन्य MySQL संस्करण में पुनर्स्थापित कर सकते हैं, या बिना उपयोग किए अपने डेटाबेस को पूरी तरह से स्थानांतरित कर सकते हैं mysqldump
। बड़े डेटाबेस को ले जाने पर मुझे यह सुपर मददगार लगा।
सरल! एक डमी डेटाबेस बनाएं (अबेक कहें)
इन सभी .myd, .myi, .frm फ़ाइलों को mysql \ data \ abc में कॉपी करें, जिसमें mysql \ data \ वह स्थान है जहाँ .myd, .myi, .frm सभी डेटाबेस संग्रहीत हैं।
फिर phpMyadmin पर जाएं, db abc पर जाएं और आप अपना डेटाबेस खोजें।
मुझे लगता है .yi आप mysql के अंदर से मरम्मत कर सकते हैं।
यदि आप MySQL के इस प्रकार के त्रुटि संदेश देखते हैं: डेटाबेस क्वेरी (क्वेरी) 1016 निष्पादित करने में विफल रहा: फ़ाइल को नहीं खोल सकता: 'someable.MYI'। (ग़लती: 145) त्रुटि Msg: 1034: तालिका के लिए गलत कुंजी फ़ाइल: 'कुछ'। इसे सुधारने की कोशिश करें तब आपके पास शायद दुर्घटनाग्रस्त या भ्रष्ट तालिका हो।
आप इस तरह से mysql प्रॉम्प्ट से टेबल की जांच और मरम्मत कर सकते हैं:
check table sometable;
+------------------+-------+----------+----------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------+
| yourdb.sometable | check | warning | Table is marked as crashed |
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------------------------+
repair table sometable;
+------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| yourdb.sometable | repair | status | OK |
+------------------+--------+----------+----------+
और अब आपकी तालिका ठीक होनी चाहिए:
check table sometable;
+------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------+
मुझे फ़ाइलों को .sql
फ़ाइल में कनवर्ट करने के लिए एक समाधान मिला (आप तब .sql
फ़ाइल को एक सर्वर पर आयात कर सकते हैं और डेटाबेस को पुनर्प्राप्त कर सकते हैं), /var
निर्देशिका तक पहुंचने की आवश्यकता के बिना , इसलिए आपको ऐसा करने के लिए सर्वर व्यवस्थापक होने की आवश्यकता नहीं है।
इसके लिए आपके कंप्यूटर पर XAMPP या MAMP इंस्टॉल होना आवश्यक है।
C:\XAMPP
), और उप-निर्देशिका पर नेविगेट करें mysql\data
। पूरा रास्ता होना चाहिएC:\XAMPP\mysql\data
आपके अंदर आपके द्वारा बनाए गए किसी भी अन्य डेटाबेस के फ़ोल्डर दिखाई देंगे। कॉपी और फ़ोल्डर का पूरा पेस्ट करें .myd
, .myi
और .frm
वहाँ में फ़ाइलों। उस फ़ोल्डर का पथ होना चाहिए
C:\XAMPP\mysql\data\foldername\.mydfiles
फिर localhost/phpmyadmin
किसी ब्राउजर में जाएं । उस डेटाबेस का चयन करें जिसे आपने mysql\data
फ़ोल्डर में चिपकाया है , और नेविगेशन बार में एक्सपोर्ट पर क्लिक करें। एक .sql
फ़ाइल के रूप में निर्यात को चुनता है । इसके बाद यह पूछेंगे कि फाइल को कहां सेव करें
और वह यह है! अब आपके पास ( .sql
डेटाबेस ) एक फाइल होनी चाहिए जिसमें मूल रूप .myd
से .myi
और .frm
फाइलें थीं । फिर आप phpMyAdmin के माध्यम से एक नया डेटाबेस बनाने और नेविगेशन बार में 'आयात' दबाकर, फिर इसे आयात करने के चरणों का पालन करके दूसरे सर्वर पर आयात कर सकते हैं
जब तक यह mySQL का EXACT समान संस्करण है, तब तक आप फ़ाइलों को डेटा फ़ोल्डर की उपनिर्देशिका निर्देशिका में उचित रूप से कॉपी कर सकते हैं और आपने उस निर्देशिका में सभी संबद्ध फ़ाइलों को बनाए रखा है। यदि आपके पास सभी फाइलें नहीं हैं, तो मुझे पूरा यकीन है कि आपके पास समस्याएँ हैं।
http://forums.devshed.com/mysql-help-4/mysql-installation-problems-197509.html
यह ib_ * फ़ाइलों का नाम बदलने के लिए कहता है। मैंने इसे किया है और इसने मुझे db वापस दिया है।
उपरोक्त विवरण मेरे लिए काम करने वाली चीजें (शायद घने या आलसी) पाने के लिए पर्याप्त नहीं था, इसलिए मैंने भविष्य में मेरी मदद करने के लिए जवाब मिलने के बाद एक बार यह स्क्रिप्ट बनाई। आशा है कि यह दूसरों की मदद करता है
vim fixperms.sh
#!/bin/sh
for D in `find . -type d`
do
echo $D;
chown -R mysql:mysql $D;
chmod -R 660 $D;
chown mysql:mysql $D;
chmod 700 $D;
done
echo Dont forget to restart mysql: /etc/init.d/mysqld restart;
उन लोगों के लिए जिनके पास Windows XP है और MySQL सर्वर 5.5 स्थापित है - डेटाबेस के लिए स्थान C: \ Documents and Settings \ All Users \ Application Data \ MySQL \ MySQL Server 5.5 \ data है, जब तक कि आपने MySql Workchch स्थापना के भीतर स्थान नहीं बदला। जीयूआई।