मेरी / var / lib / mysql निर्देशिका में ibdata1 फ़ाइल क्या है?


32

अपने वेबमिन कंट्रोल पैनल में लॉग इन करते हुए, मैंने देखा कि वस्तुतः मेरी सभी डिस्क स्पेस भरी हुई है। मैंने अपने सिस्टम पर दस सबसे बड़ी फ़ाइलों / निर्देशिकाओं की खोज की और पाया कि ibdata1 नामक एक फ़ाइल लगभग 94GB स्थान ले रही है। यह मेरी / var / lib / mysql निर्देशिका में रहता है।

Ibdata1 क्या करता है? क्या मैं इसे हटाने के लिए सुरक्षित हूं? मेरी धारणा है कि यह किसी तरह का एक डंप है, लेकिन यह सिर्फ एक जंगली अनुमान है।

जवाबों:


38

फ़ाइल ibdata1InnoDB बुनियादी ढांचे के लिए सिस्टम टेबलस्पेस है।

इसमें InnoDB के लिए महत्वपूर्ण जानकारी के लिए कई कक्षाएं शामिल हैं

  • तालिका डेटा पृष्ठ
  • टेबल इंडेक्स पेज
  • डेटा शब्दकोश
  • MVCC नियंत्रण डेटा
    • अंतरिक्ष को पूर्ववत करें
    • रोलबैक सेगमेंट
  • डबल लिखने बफर (ओएस कैशिंग से बचने के लिए पृष्ठभूमि में लिखे गए पृष्ठ)
  • बफ़र सम्मिलित करें (द्वितीयक अनुक्रमणिका में परिवर्तन)

कृपया ध्यान दें कि ibdata1 का स्थान InnoDB यूनिवर्स में (दाईं ओर)

InnoDB वास्तुकला

आप innodb_file_per_tableibdata1 को सक्षम करके डेटा और इंडेक्स पेजों को अलग कर सकते हैं । यह किसी भी नई बनाई गई InnoDB तालिका को बाहरी फ़ाइल में डेटा और इंडेक्स पेज संग्रहीत करने का कारण बनेगा ।.ibd

उदाहरण

  • डेटादिर / var / lib / mysql है
  • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;, बनाता है /var/lib/mysql/mydb/mytable.frm
    • innodb_file_per_table सक्षम किया गया, डेटा / इंडेक्स पेज संग्रहीत किए गए /var/lib/mysql/mydb/mytable.ibd
    • innodb_file_per_table अक्षम, डेटा / सूचकांक पृष्ठ ibdata1 में संग्रहीत

कोई बात नहीं जहां InnoDB तालिका संग्रहीत की जाती है, InnoDB की कार्यक्षमता को तालिका मेटाडेटा की तलाश में है और ACID अनुपालन और लेनदेन अलगाव का समर्थन करने के लिए MVCC जानकारी को संग्रहीत और पुनर्प्राप्त करना आवश्यक है ।

यहाँ ibdata1 से टेबल डेटा और इंडेक्स को अलग करने पर मेरे पिछले लेख हैं

आगे क्या करना है

आप जारी रख सकते हैं ibdata1 ने सब कुछ संग्रहीत किया है, लेकिन यह LVM स्नैपशॉट को वास्तविक ड्रगरी (मेरी व्यक्तिगत राय) बनाता है।

आपको My StackOverflow पोस्ट का उपयोग करने और उस फ़ाइल को स्थायी रूप से सिकोड़ने की आवश्यकता है।

कृपया इस क्वेरी को चलाएं:

SELECT 
    ((POWER(1024,3)*94 - InnoDBDiskDataAndIndexes))/POWER(1024,3) SpaceToReclaim
FROM
(SELECT SUM(data_length+index_length) InnoDBDiskDataAndIndexes
FROM information_schema.tables WHERE engine='InnoDB') A;

यह बताएगा कि InnoDB Cleanup को लागू करने के बाद कितनी जगह बर्बाद हो सकती है।


आपके सहयोग के लिए धन्यवाद। मेरी डिस्क कोटा पूरी तरह से भरा हुआ है - इससे पहले कि मैं आपकी किसी भी सलाह पर कार्रवाई करूं, क्या मुझे मुफ्त स्थान की आवश्यकता होगी? मैं ध्यान देता हूं कि एसओ पर आपके मूल पोस्ट में एसक्यूएल डंप करने के बारे में उल्लेख है, लेकिन यह संभवतः एक ~ 90 जीबी फ़ाइल बनाने के लिए कहीं नहीं जाना होगा।
जेम्स

mysqldump केवल डेटा पृष्ठों का तार्किक प्रतिनिधित्व करेगा, न कि अनुक्रमणिकाओं का। डेटा डंप करने के लिए आपको एक और डिस्क माउंट, शायद एक रिमोट सर्वर की आवश्यकता होगी।
रोलैंडमाइसीडीडीबीए

9
यह मेरे लिए 91.25350952148438 है SpaceToReclaim। क्या यह मेगाबाइट्स में है? प्रतिशत? बाइट्स?
इसहाक

मुझे पता है यह बहुत पुराना है। लेकिन इस मुद्दे के साथ आने वाले किसी भी व्यक्ति के लिए, आपको GB में 94आपकी ibdata1फ़ाइल का आकार जो भी हो, उस नंबर को प्रतिस्थापित करने की आवश्यकता है और यह SpaceToReclaimआपको GB में आकार देगा।
अनूपसभराम

8

वह फ़ाइल है ibdata1, नहीं है ibdatalऔर इसमें आपके सभी InnoDB डेटाबेस शामिल हैं। यदि आप इसे हटाते हैं, तो आप अपना सारा डेटा खो देते हैं।

इससे निपटने के तरीकों के बारे में कुछ विचारों के लिए, देखें कि MySQL में ibdata1 फ़ाइल को कैसे सिकोड़ें / शुद्ध करें


2

यदि आप डिफ़ॉल्ट रूप से MySQL इंजन के रूप में इनोडब का उपयोग करते हैं तो आपके सभी डेटाबेस को ibdata1 में संग्रहीत करेगा। इसके अलावा लॉग फाइल ib_logfile0 और ib_logfile1 हैं। उन फाइलों को डिलीट न करें।


मेरे सर्वर पर उस फ़ाइल को क्या हटाएं?
फ्रैंक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.