जब एक MySQL डेटाबेस भ्रष्ट हो जाता है, तो आप सोच सकते हैं कि डेटाबेस पहले स्थान पर क्यों दूषित हो गया। यह पोस्ट प्रश्न का उत्तर देने से पहले डेटाबेस भ्रष्टाचार के संभावित कारणों की रूपरेखा तैयार करेगी:एक भ्रष्ट MySQL डेटाबेस की मरम्मत कैसे करें?
MySQL डेटाबेस भ्रष्टाचार के पीछे के कारण
इनमें से किसी भी कारण से एक MySQL डेटाबेस दूषित हो सकता है:
- अचानक सर्वर बंद हो जाना
- डिस्क सबसिस्टम, डिस्क नियंत्रक, ड्राइवर आदि जैसे डेटा को संग्रहीत और पुनर्प्राप्त करने के लिए उपयोग किए जाने वाले हार्डवेयर में दोष
- 'mysqld' प्रक्रिया समाप्त हो जाती है, जबकि एक जारी अद्यतन प्रक्रिया में होता है
- सॉफ़्टवेयर बग
दूषित डेटाबेस के कारण को इंगित करना चुनौतीपूर्ण हो सकता है। कारण जो भी हो, आपको चिंता होनी चाहिए कि भ्रष्ट MySQL डेटाबेस को कैसे ठीक किया जाए।
भ्रष्ट MySQL डेटाबेस को कैसे ठीक करें?
पहली चीज जो आपको देखने की जरूरत है वह है आपको मिलने वाला त्रुटि संदेश। जब MySQL डेटाबेस दूषित हो जाता है तो कुछ त्रुटि संदेश निम्नलिखित हो सकते हैं:
त्रुटि 144: तालिका क्रैश हो गई है, और अंतिम मरम्मत विफल हो गई है
त्रुटि 141: डुप्लीकेट अद्वितीय कुंजी या लिखने या अपडेट करने में बाधा
त्रुटि 136: अनुक्रमणिका फ़ाइल में और जगह नहीं है
त्रुटि 134: रिकॉर्ड पहले ही हटा दिया गया था
त्रुटि 126: अनुक्रमणिका फ़ाइल क्रैश/गलत फ़ाइल स्वरूप है
त्रुटि: फ़ाइल 'wtlicensemanager.dll' नहीं मिली
यदि आप नि:शुल्क मरम्मत करना चाहते हैं, तो आपके पास दो विकल्प हैं:
- इसे मैन्युअल रूप से करें।
- परीक्षण अवधि का उपयोग करके सॉफ़्टवेयर की सहायता से करें।
एक डेटाबेस पुनर्प्राप्ति सॉफ़्टवेयर दूषित डेटाबेस को सुधारने में बेहतर और तेज़ कार्य कर सकता है।
यहां एक सॉफ्टवेयर एप्लिकेशन है जिसका उपयोग आप दूषित MySQL डेटाबेस को सुधारने के लिए कर सकते हैं:
यह MySQL डेटाबेस रिपेयर टूल रिपेयर डेटाबेस, MySQL के InnoDB और MyISAM डेटाबेस इंजन दोनों का उपयोग करके बनाया गया है। पुनर्प्राप्त करने योग्य डेटाबेस को सहेजने से पहले पूर्वावलोकन करने के लिए आप SQL मरम्मत उपकरण का डेमो संस्करण डाउनलोड कर सकते हैं।
मुख्य विशेषताएं:
- विंडोज और लिनक्स सिस्टम पर MySQL डेटाबेस को रिकवर कर सकता है।
- InnoDB फ़ाइलें (.ibdata, .ibd और .frm) और MyISAM फ़ाइलें (myd, .myi और .frm) पुनर्प्राप्त करता है
- डेटाबेस ऑब्जेक्ट जैसे टेबल, टेबल प्रॉपर्टी, डेटा टाइप, व्यू, ट्रिगर आदि को पुनर्स्थापित करता है।
- डेटाबेस घटकों की चयनात्मक पुनर्प्राप्ति की अनुमति देता है
भ्रष्ट MySQL डेटाबेस को मैन्युअल रूप से कैसे ठीक करें?
MySQL में दो प्रकार के स्टोरेज इंजन हैं:InnoDB और MyISAM। InnoDB तालिका में FRM, IBDATA और IDB फ़ाइलें होती हैं, जबकि MyISAM तालिका में FRM, MYD और MYI फ़ाइलें होती हैं।
आगे बढ़ने से पहले
यहां कुछ चीजें हैं जिन पर आपको मैन्युअल पुनर्प्राप्ति का प्रयास करने से पहले विचार करना चाहिए:
- सर्वर को रीबूट न करें
जब आप सर्वर को रिबूट करते हैं, तो सर्वर दूषित डेटाबेस को संदिग्ध मोड में रख सकता है। यह डेटाबेस को बंद कर देगा। यह डेटाबेस से कनेक्ट करते समय त्रुटियां भी पैदा कर सकता है। आपको सर्वर को रीबूट किए बिना पुनर्प्राप्ति का प्रयास करना चाहिए।
- एकल उपयोगकर्ता मोड का उपयोग करें
सुनिश्चित करें कि आप डेटाबेस से जुड़े एकमात्र उपयोगकर्ता हैं। एकल-उपयोगकर्ता मोड आपको अन्य उपयोगकर्ताओं के हस्तक्षेप को समाप्त करते हुए संपूर्ण नियंत्रण प्रदान करता है।
- MySQL को अपग्रेड न करें
आप दूषित फ़ाइलों को सुधारने के लिए MySQL डेटाबेस को अपडेट करने के बारे में सोच सकते हैं। पर ये स्थिति नहीं है। अपग्रेड से स्थायी डेटा हानि हो सकती है।
- दूषित MySQL डेटाबेस का बैकअप लें
दूषित फ़ाइल का बैकअप होना महत्वपूर्ण है क्योंकि ऐसी त्रुटियाँ हो सकती हैं जो आपके डेटा को खोने का कारण बन सकती हैं। इस बात की कोई गारंटी नहीं है कि आपके मैनुअल कदम स्वस्थ फाइलों को प्रभावित नहीं करेंगे। इसलिए मैन्युअल पुनर्प्राप्ति का प्रयास करने से पहले बैकअप लेना सुरक्षित है।
बैकअप लेने के लिए, निम्न कमांड का उपयोग करें:
mysqldump db_name> database_name.sql
डेटाबेस_नाम के स्थान पर बस अपना डेटाबेस नाम दर्ज करें।
यदि उपरोक्त काम नहीं करता है, तो निम्न प्रयास करें:
mysqldump –u[username] –p[password] [database_name]> [dump_file].sql
डेटाबेस का बैकअप लेने का एक और तरीका है:
mysqld सेवा बंद करें
cp -r /var/lib/mysql /var/lib/mysql_bkp
अब जबकि हमारे पास बैकअप है, हम दूषित MySQL डेटाबेस को सुधारने का प्रयास कर सकते हैं।
MySQL डेटाबेस को मैन्युअल रूप से कैसे पुनर्प्राप्त करें?
MyISAM डेटाबेस की मरम्मत करना
यदि आप अपनी डेटाबेस तालिका के लिए MyISAM डेटाबेस संग्रहण इंजन का उपयोग कर रहे हैं, तो आप तालिका को सुधारने के लिए निम्न आदेशों का उपयोग कर सकते हैं:
माइस्क्लचेक
यदि आपका MySQL सर्वर चल रहा है, तो अपनी तालिका को सुधारने के लिए निम्न mysqlcheck कमांड चलाएँ:
mysqlcheck -r [database_name]
'डेटाबेस_नाम' को अपने डेटाबेस के नाम से बदलना सुनिश्चित करें।
मायिसमचक
यदि सर्वर नहीं चल रहा है, तो myisamchk कमांड का उपयोग करके डेटाबेस तालिका को सुधारने का प्रयास करें:
नोट: इस कमांड को चलाने से पहले, सुनिश्चित करें कि सर्वर में कोई टेबल खुला नहीं है।
myisamchk table_name
अपने मामले में तालिका के नाम के साथ तालिका का नाम सुधारें। यह आदेश स्वचालित रूप से आपकी तालिका को ठीक करता है।
सर्वर को पुनरारंभ करने के लिए, निम्न टाइप करें:
सेवा mysqld प्रारंभ
बलपूर्वक InnoDB पुनर्प्राप्ति
दूषित InnoDB डेटाबेस तालिका से डेटा निकालने के लिए आपको InnoDB बल पुनर्प्राप्ति करने की आवश्यकता होगी।
चरण 1: सबसे पहले, आपको my.cnf फ़ाइल खोलनी होगी।
इस फ़ाइल में, [mysqld] अनुभाग खोजें।
इस अनुभाग में निम्न पंक्ति जोड़ें:
innodb_force_recovery=1
अब कॉन्फ़िगरेशन फ़ाइल सहेजें और MySQL सर्वर को पुनरारंभ करें। आप innodb_force_recovery का मान 1 से 6 तक सेट कर सकते हैं। हालांकि, 4 से अधिक मान की अनुशंसा नहीं की जाती है, क्योंकि यह डेटा को दूषित कर सकता है।
चरण 2: तालिका डेटा को एक नई फ़ाइल में डंप करें।
ऐसा करने के लिए, निम्न आदेश का उपयोग करें:
mysqldump –u उपयोगकर्ता –p db_name table_name> single_dbtable_dump.sql
चरण 3: डेटाबेस से दूषित तालिका को हटा दें।
mysql –u user –p –execute="DROP TABLE db_name.table_name"
चरण 4: तालिका को डंप फ़ाइल से पुनर्स्थापित करें।
mysql –u उपयोगकर्ता –p
चरण 5: एक बार फ़ाइलों की मरम्मत हो जाने के बाद, निम्न आदेश के साथ बल पुनर्प्राप्ति मोड को अक्षम करें:
#innodb_force_recovery=…
अब आप MySQL सेवा को सामान्य मोड में पुनः आरंभ कर सकते हैं।
हम आशा करते हैं कि उपरोक्त विधियाँ दूषित MySQL डेटाबेस को सुधारने में आपकी सहायता करेंगी।