वह 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*
फ़ाइलें हटा दी जाएंगी।
http://dev.mysql.com/doc/refman /5.1/hi/drop-database.html
आपने शायद इसे देखा होगा:
http://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
।