यह पूरी तरह से संभव है कि तालिका भ्रष्ट है। मेरा मतलब यह नहीं है कि डेटा और / या सूचकांक पृष्ठ क्षतिग्रस्त हैं। बहुत कुछ सरल हो सकता है जो टूट गया है।
मैंने हाल ही में एक स्लेव सर्वर पर एक बैकअप स्क्रिप्ट के साथ एक समस्या का अनुभव किया, जब मैंने कई डेटाबेस के समानांतर mysqldumped किया। डेटाबेस में से एक पर mysqldump चलाने से एक बहुत छोटा mysqldump निकला। DB में 80+ टेबल थे। हालांकि, डीबी में पांचवीं मेज पर mysqldump बंद हो गया। जब मैं SHOW CREATE TABLE tblname\G
स्लेव पर टेबल पर भागा , तो मुझे "टेबल नॉट फाउंड" की त्रुटि मिली। जब मैं SHOW CREATE TABLE tblname\G
मास्टर पर भागा , तो तालिका विवरण अपेक्षित रूप से प्रदर्शित हुआ।
जो हुआ वह थोड़ा पागल था: एक क्लाइंट ने टेबल को रिस्टोर करने के लिए कहा और एक इंजीनियर ने डिस्क बैकअप से इनोबीडी टेबल की .ibd फाइल को रिस्टोर किया। .Ibd फ़ाइल (जो 25 वर्ष की थी) की टेबलस्पेस आईडी ibdata1 (जो कि 28) में पंजीकृत टेबलस्पेस आईडी से मेल नहीं खाती थी।
मैंने गुलाम को छुपाने, मास्टर को खुश करने, और खरोंच से प्रतिकृति स्थापित करके समस्या को ठीक किया। सौभाग्य से, डेटा और इंडेक्स कुल 7GB हो गए। इस प्रकार rstore प्रक्रिया कोई बड़ी बात नहीं थी।
कहानी का नैतिक
बुनियादी समस्या यह है कि mysqldump जब टेबलस्पेस आईडी गलत है, तो एक InnoDB में त्रुटि की रिपोर्ट नहीं करता है। जब एक mysqldump खत्म हो जाता है और वर्णमाला के क्रम में हर तालिका को डंप नहीं करता है, तो यह इंगित करता है कि यह एक त्रुटि द्वारा समाप्त हो गया है और एक त्रुटि संदेश को प्रिंट किए बिना ऐसा किया है।
सुनिश्चित करने के लिए जाँच करें
- आप तालिका की संरचना का उपयोग करके प्रदर्शित कर सकते हैं
SHOW CREATE TABLE
- आप INFORMATION_SCHEMA.TABLES की एक तालिका के बारे में सब कुछ क्वेरी कर सकते हैं