Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL डेटाबेस के साथ सामान्य समस्याओं को कैसे ठीक करें?

सारांश: यह आलेख कुछ सामान्य त्रुटियों को सूचीबद्ध करता है जिनका सामना MySQL तालिका के दूषित होने पर हो सकता है। यह MySQL डेटाबेस तालिका भ्रष्टाचार के पीछे संभावित कारणों को भी रेखांकित करता है। लेख में यह भी बताया गया है कि आप भ्रष्ट तालिकाओं को ठीक करने के लिए क्या कर सकते हैं और कैसे एक MySQL डेटाबेस मरम्मत सॉफ़्टवेयर तालिका और अन्य सभी डेटाबेस ऑब्जेक्ट के भीतर डेटा पुनर्प्राप्त करने के काम आ सकता है।

एक MySQL डेटाबेस उपयोगकर्ता के रूप में, आपको इनमें से किसी भी त्रुटि का सामना करना पड़ सकता है:

  • “टेबल को क्रैश के रूप में चिह्नित किया गया है और इसे ठीक किया जाना चाहिए”
  • “टेबल खराब हो गया है और पिछली मरम्मत विफल हो गई है”
  • “तालिका tbl_name मौजूद नहीं है”
  • “तालिका के लिए गलत कुंजी फ़ाइल:'...'। इसे सुधारने का प्रयास करें", आदि।

ये चेतावनी के संकेत हैं कि आपकी MySQL तालिका दूषित है।

MySQL डेटाबेस तालिका में भ्रष्टाचार का क्या कारण है?

MySQL डेटाबेस तालिका में भ्रष्टाचार के संभावित कारण निम्नलिखित हैं:

  • डिस्क सबसिस्टम, ड्राइवर, कंट्रोलर आदि सहित MySQL द्वारा उपयोग किए जाने वाले अंतर्निहित प्लेटफॉर्म में समस्याएं।
  • अचानक सिस्टम शटडाउन या सर्वर क्रैश
  • डेटाबेस को लिखने के बीच में ही MySQL प्रक्रिया समाप्त हो जाती है
  • सॉफ़्टवेयर बग या हार्डवेयर विफलता

इनमें से किसी भी MySQL भ्रष्टाचार त्रुटि का सामना करने से तालिकाओं के भीतर डेटा पहुंच योग्य नहीं हो सकता है। आइए क्षतिग्रस्त तालिकाओं को ठीक करने के समाधानों पर चर्चा करें।

MySQL डेटाबेस भ्रष्टाचार त्रुटियों को कैसे ठीक करें?

यदि आपके पास अपने डेटाबेस का अपडेटेड बैकअप है, तो डेटाबेस को बैकअप से पुनर्स्थापित करें ताकि अप्राप्य तालिका डेटा को पुनर्प्राप्त किया जा सके। यदि बैकअप उपलब्ध नहीं है, तो दूषित MySQL तालिकाओं को ठीक करने और डेटा पुनर्प्राप्त करने के लिए नीचे दिए गए क्रम में चरणों का पालन करें:

नोट: मरम्मत और पुनर्प्राप्ति प्रक्रिया के दौरान और क्षति को रोकने के लिए अपने MySQL डेटाबेस और तालिकाओं का बैकअप लें।

चरण 1:त्रुटि के लिए तालिका जांचें

सबसे पहले, आपको भ्रष्टाचार त्रुटियों के लिए डेटाबेस तालिका की जाँच करनी चाहिए। आप चेक टेबल . का उपयोग कर सकते हैं भ्रष्ट InnoDB और MyISAM तालिकाओं के निदान के लिए आदेश:

टेबल चेक करें tbl_name विकल्प;

यहां, 'tbl_name' को दूषित डेटाबेस तालिका के नाम से बदलें। और 'विकल्प' को इनमें से किसी भी विकल्प से बदलें:त्वरित, तेज़, मध्यम, विस्तारित और परिवर्तित।

विकल्प विवरण
त्वरित InnoDB और MyISAM तालिकाओं की तेजी से मरम्मत करता है। गलत लिंक देखने के लिए पंक्तियों को स्कैन करना छोड़ देता है
तेज़ केवल MyISAM तालिकाओं की जांच करें जिन्हें ठीक से बंद नहीं किया गया है। InnoDB तालिकाओं पर लागू न करें।
बदला हुआ केवल MyISAM तालिकाओं की जाँच करें जो पिछली जाँच के बाद से बंद नहीं हुई हैं। InnoDB तालिकाओं पर लागू न करें।
मध्यम पंक्तियों को स्कैन करके सत्यापित करें कि हटाए गए लिंक मान्य हैं या नहीं। केवल MyISAM तालिकाओं पर लागू होता है।
विस्तारित MyISAM तालिका की प्रत्येक पंक्ति के लिए सभी कुंजियों के लिए एक पूर्ण कुंजी लुकअप करता है। इसे निष्पादित करने में लंबा समय लगता है।

भ्रष्टाचार के लिए एक से अधिक तालिका की जाँच करने के लिए, निम्न आदेश का उपयोग करें:

तालिका जांचें tbl_name1, tbl_name2, tbl_name 3 विकल्प;

नोट: CHECK TABLE कमांड का उपयोग केवल तभी किया जा सकता है जब MySQL प्रक्रिया चल रही हो। लेकिन, यदि प्रक्रिया/सर्वर नहीं चल रहा है, तो आप भ्रष्टाचार के लिए MyISAM तालिकाओं की जाँच करने के लिए निम्न 'myisamchk' कमांड का उपयोग कर सकते हैं:

myisamchk [विकल्प] tbl_name …

यह आदेश एकल तालिका की जाँच करता है।

भ्रष्टाचार के लिए MySQL डेटाबेस में सभी तालिकाओं की जाँच करने के लिए निम्न आदेश निष्पादित करें:

myisamchk /path/to/datadir/*/*.MYI

Myisamchk उपयोगिता InnoDB तालिकाओं के लिए काम नहीं करती है।

चरण 2:दूषित टेबल को ठीक करें

नोट: Myisamchk कमांड केवल MyISAM तालिकाओं पर लागू होता है और InnoDB तालिकाओं के लिए काम नहीं करता है। एक इनोडब तालिका को सुधारने और पुनर्प्राप्त करने के लिए, चरण 3 पर जाएं।

myisamchk उपयोगिता एक भ्रष्ट (क्षतिग्रस्त) MyISAM तालिका को सुधारने में भी मदद कर सकती है। क्षतिग्रस्त तालिका की मरम्मत के लिए उपयोगिता का उपयोग करने के लिए, निम्न कार्य करें:

  1. MySQL सेवा को टाइप करके रोकें:
सेवा mysqld स्टॉप

सीडी /var/lib/mysql

  1. उस निर्देशिका में बदलें जहां डेटाबेस स्थित है।
cd /var/lib/mysql/table_name

myisamchk

  1. एक क्षतिग्रस्त तालिका को सुधारने के लिए, तालिका को उस तालिका के नाम से प्रतिस्थापित करके निम्न आदेश चलाएँ जिसे आप सुधारना चाहते हैं:
myisamchk -recover
  1. अपनी MySQL सेवा को पुनरारंभ करें।
सेवा mysqld start

चरण 3:InnoDB पुनर्प्राप्ति को बाध्य करें

InnoDB तालिकाओं में भ्रष्टाचार को ठीक करने के लिए, ‘innodb_force_recovery’ का उपयोग करें विकल्प। यह विकल्प InnoDB डेटाबेस इंजन को बिना किसी पृष्ठभूमि संचालन के प्रारंभ करने के लिए बाध्य करता है, जिससे आप अपनी तालिकाओं को डंप कर सकते हैं।

  1. अपनी MySQL कॉन्फ़िगरेशन फ़ाइल (my.cnf) खोलें, और [mysqld] अनुभाग में निम्नलिखित जोड़ें:
[mysqld]

innodb_force_recovery=1

सेवा mysql पुनरारंभ करें

आप 1 के मान से innodb_force_recovery प्रारंभ कर सकते हैं और आवश्यकतानुसार मान बढ़ा सकते हैं। एक बार जब आप innodb पुनर्प्राप्ति शुरू कर देते हैं, तो अपने MySQL सर्वर को पुनरारंभ करें और फिर अपनी तालिकाओं को डंप करें। हालांकि, कुछ स्थितियों में, आपको मान को 4 से 6 तक सेट करने की आवश्यकता हो सकती है, जो डेटा को दूषित कर सकता है।

सावधान! यदि आप तालिकाओं को innodb_force_recovery=3 या उससे कम मान के साथ डंप करने में सक्षम हैं, तो आप पुनर्प्राप्ति प्रक्रिया को सुरक्षित रूप से निष्पादित कर सकते हैं। हालाँकि, innodb_force_recovery को 4 से अधिक मान पर सेट करने से डेटा हानि का जोखिम शामिल होता है।

  1. यदि आप अपना डेटाबेस शुरू करने में सक्षम हैं, तो सभी डेटाबेस को SQL फ़ाइल में निर्यात करने के लिए निम्न mysqldump कमांड चलाएँ (यानी, बैकअप फ़ाइल जिसमें डेटाबेस को पुनर्स्थापित करने के लिए सभी कथन शामिल हैं):
mysqldump -all-databases -add-drop-database -add-drop-table> mydump.sql
  1. MySQL सेवा प्रारंभ करें, और फिर DROP DATABASE कमांड का उपयोग करके प्रभावित तालिकाओं वाले डेटाबेस को छोड़ने का प्रयास करें। यदि आप किसी डेटाबेस को नहीं छोड़ सकते हैं, तो MySQL सर्वर को रोकने के बाद नीचे दिए गए चरणों का पालन करके इसे मैन्युअल रूप से हटाने का प्रयास करें।
cd /var/lib/mysql

आरएम-आरएफ <डेटाबेस>

  1. उपरोक्त आदेश को निष्पादित करने के बाद, [mysqld] में नीचे की पंक्ति पर टिप्पणी करके InnoDB पुनर्प्राप्ति को अक्षम करें:
#innodb_force_recovery=…
  1. आपके द्वारा my.cnf फ़ाइल में किए गए सभी परिवर्तनों को सहेजें, और फिर अपना सर्वर प्रारंभ करें।
सेवा mysqld start
  1. डेटाबेस और तालिका को MySQL डंप (बैकअप फ़ाइल) से पुनर्स्थापित करें जिसे आपने चरण 2 में बनाया है:
mysql -u user -p

इन चरणों को करने से MySQL डेटाबेस और उसकी तालिकाएँ पुनर्स्थापित हो जाएँगी। यदि डेटा अभी भी अनुपलब्ध है, तो आपको पेशेवर MySQL डेटाबेस मरम्मत सॉफ़्टवेयर का उपयोग करने की आवश्यकता होगी, जैसे MySQL के लिए तारकीय मरम्मत अपने डेटाबेस को पुनर्स्थापित करने और उसके डेटा को पुनर्प्राप्त करने के लिए। सॉफ्टवेयर डेटा को बरकरार रखते हुए InnoDB और MyISAM दोनों तालिकाओं की मरम्मत कर सकता है। यह विंडोज़ के साथ-साथ लिनक्स सिस्टम पर MySQL टेबल की मरम्मत का समर्थन करता है।

निष्कर्ष

अचानक सिस्टम शटडाउन, सर्वर क्रैश, हार्डवेयर विफलता, MySQL कोड में बग आदि के कारण MySQL डेटाबेस टेबल दूषित हो सकते हैं। MySQL तालिका में भ्रष्टाचार के परिणामस्वरूप इस आलेख में सूचीबद्ध त्रुटियां होती हैं। आप 'myisamchk' उपयोगिता का उपयोग करके या InnoDB पुनर्प्राप्ति को बाध्य करके दूषित MyISAM तालिकाओं को सुधारने का प्रयास कर सकते हैं। हालाँकि, MyISAM तालिकाओं को सुधारने और मैन्युअल रूप से InnoDB पुनर्प्राप्ति करने में काफी समय लग सकता है। साथ ही, मैन्युअल पुनर्प्राप्ति प्रक्रिया के परिणामस्वरूप डेटा हानि हो सकती है। MySQL सॉफ़्टवेयर के लिए स्टेलर रिपेयर का उपयोग करना एक बेहतर विकल्प है। सॉफ्टवेयर मूल डेटा में कोई बदलाव किए बिना MyISAM और InnoDB दोनों डेटाबेस तालिकाओं की मरम्मत की अनुमति देता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ubuntu linux में MySql रूट पासवर्ड कमांड लाइन को कैसे रीसेट/बदलें?

  2. समूह से पहले MySQL आदेश

  3. परीक्षण के लिए अपने MySQL उदाहरणों को कैसे विफल या क्रैश करें?

  4. Mysql त्रुटि 1025 (HY000) का क्या अर्थ है:'./foo' के नाम बदलने में त्रुटि (त्रुटि:150) का क्या अर्थ है?

  5. प्रत्येक समूह में अंतिम रिकॉर्ड प्राप्त करना - MySQL

© कॉपीराइट http://hi.sqldat.com सर्वाधिकार सुरक्षित