वह ibdata1 सिकुड़ नहीं रहा है MySQL की एक विशेष रूप से कष्टप्रद विशेषता है। ibdata1 फ़ाइल को वास्तव में तब तक छोटा नहीं किया जा सकता जब तक कि आप सभी डेटाबेस को हटा नहीं देते, फ़ाइलों को हटा नहीं देते और डंप को पुनः लोड नहीं करते।
लेकिन आप MySQL को कॉन्फ़िगर कर सकते हैं ताकि प्रत्येक तालिका, इसकी अनुक्रमणिका सहित, एक अलग फ़ाइल के रूप में संग्रहीत हो। इस तरह ibdata1 उतना बड़ा नहीं होगा। बिल कार्विन की टिप्पणीके अनुसार ए> यह डिफ़ॉल्ट रूप से MySQL के संस्करण 5.6.6 के रूप में सक्षम है।
कुछ समय पहले मैंने ऐसा किया था। हालांकि, प्रत्येक तालिका के लिए अलग-अलग फ़ाइलों का उपयोग करने के लिए अपने सर्वर को सेटअप करने के लिए आपको my.cnf बदलने की आवश्यकता है इसे सक्षम करने के लिए:
[mysqld]
innodb_file_per_table=1
https://dev.mysql .com/doc/refman/5.6/hi/innodb-file-per-table-tablespaces.html
जैसा कि आप ibdata1 . से स्थान पुनः प्राप्त करना चाहते हैं आपको वास्तव में फ़ाइल को हटाना होगा:
- एक
mysqldumpकरेंmysqlको छोड़कर सभी डेटाबेस, प्रक्रियाओं, ट्रिगर आदि के औरperformance_schemaडेटाबेस - सभी डेटाबेस छोड़ें उपरोक्त 2 डेटाबेस को छोड़कर
- mysql बंद करो
- हटाएं
ibdata1औरib_logफ़ाइलें - mysql प्रारंभ करें
- डंप से पुनर्स्थापित करें
जब आप चरण 5 में MySQL प्रारंभ करते हैं ibdata1 और ib_log फ़ाइलें फिर से बनाई जाएंगी.
अब आप जाने के योग्य हैं। जब आप विश्लेषण के लिए एक नया डेटाबेस बनाते हैं, तो टेबल अलग ibd* . में स्थित होंगे फ़ाइलें, ibdata1 . में नहीं . जैसे ही आप आमतौर पर डेटाबेस को जल्द ही छोड़ देते हैं, ibd* फ़ाइलें हटा दी जाएंगी।
https://dev.mysql.com/doc/refman /5.1/hi/drop-database.html
आपने शायद इसे देखा होगा:
https://bugs.mysql.com /bug.php?id=1341
कमांड का उपयोग करके ALTER TABLE <tablename> ENGINE=innodb या OPTIMIZE TABLE <tablename> कोई डेटा और अनुक्रमणिका पृष्ठों को ibdata1 से फ़ाइलों को अलग करने के लिए निकाल सकता है। हालांकि, ibdata1 तब तक सिकुड़ेगा नहीं जब तक आप ऊपर दिए गए चरणों का पालन नहीं करते।
information_schema . के बारे में , यह आवश्यक नहीं है और न ही गिराना संभव है। यह वास्तव में केवल पढ़ने के लिए विचारों का एक समूह है, टेबल नहीं। और उनसे जुड़ी कोई फाइल नहीं है, यहां तक कि एक डेटाबेस निर्देशिका भी नहीं है। informations_schema मेमोरी डीबी-इंजन का उपयोग कर रहा है और mysqld को रोकने/पुनरारंभ करने पर गिराया और पुन:उत्पन्न किया जाता है। देखें https://dev.mysql.com/doc/ refman/5.7/hi/information-schema.html
।