2010-06-07 13 views
16

मेरे पास बाइनरी लॉगिंग सक्रिय के साथ एक MySQL सर्वर है। एक बार दिन लॉग फ़ाइल "घूर्णन" हो जाती है, यानी MySQL इसे लिखना बंद कर देता है और बनाता है और नई लॉग फ़ाइल बनाता है। उदाहरण के लिए, मेरे पास वर्तमान में इन फ़ाइलों में/var/lib/mysqlक्या घुमावदार MySQL बाइनरी लॉग को हटाना सुरक्षित है?

-rw-rw---- 1 mysql mysql 10485760 Jun 7 09:26 ibdata1 
-rw-rw---- 1 mysql mysql 5242880 Jun 7 09:26 ib_logfile0 
-rw-rw---- 1 mysql mysql 5242880 Jun 2 15:20 ib_logfile1 
-rw-rw---- 1 mysql mysql 1916844 Jun 6 09:20 mybinlog.000004 
-rw-rw---- 1 mysql mysql 61112500 Jun 7 09:26 mybinlog.000005 
-rw-rw---- 1 mysql mysql 15609789 Jun 7 13:57 mybinlog.000006 
-rw-rw---- 1 mysql mysql  54 Jun 7 09:26 mybinlog.index 

और mybinlog.000006 बढ़ रहा है।

क्या मैं बस mybinlog.000004 और mybinlog.000005 ले सकता हूं, उन्हें ज़िप कर सकता हूं और किसी अन्य सर्वर पर स्थानांतरित कर सकता हूं, या मुझे पहले कुछ और करने की ज़रूरत है?

mybinlog.index में कौन सी जानकारी संग्रहीत की जाती है? केवल नवीनतम बाइनरी लॉग के बारे में जानकारी?

अद्यतन: मुझे समझ में आता है कि मैं पूर्ण बिलिंग लॉग के साथ लॉग हटा सकता हूं जो mybinlog.index फ़ाइल को अपडेट करता है। हालांकि, मुझे उन्हें हटाने से पहले किसी अन्य कंप्यूटर पर लॉग स्थानांतरित करने की आवश्यकता है (मैं परीक्षण करता हूं कि बैकअप किसी अन्य मशीन पर मान्य है)। स्थानांतरण आकार को कम करने के लिए, मैं फ़ाइलों को bzip2 करना चाहता हूं। अगर लॉग फाइलें "वहां" नहीं हैं तो क्या अंतिम बार लॉग इन करेंगे?

उत्तर

5

मैं अंत में MySQL वेबसाइट पर इस सवाल का जवाब मिल गया। मामले में किसी को इस जानकारी की जरूरत है:

MySQL 5.0.60 को

पहले, शुद्ध बायनरी लॉग के लिए और शुद्ध बायनरी लॉग से पहले ही तरह से व्यवहार नहीं किया था (और दोनों में से कोई सही ढंग से व्यवहार) में सूचीबद्ध जब द्विआधारी लॉग फाइल .index फ़ाइल को सिस्टम से किसी अन्य माध्यम से हटा दिया गया था (जैसे कि लिनक्स पर आरएम का उपयोग करना)। MySQL 5.0.60 से शुरू होने पर, कथन के दोनों प्रकार ऐसे मामलों में त्रुटि के साथ विफल हो जाते हैं। (बग # 1819 9, बग # 18453) ऐसी त्रुटियों को संभालने के लिए, मैन्युअल रूप से मौजूद बाइनरी लॉग फ़ाइलों को सूचीबद्ध करने के लिए .index फ़ाइल (जो एक साधारण पाठ फ़ाइल है) को मैन्युअल रूप से संपादित करें, फिर इसे पूर्ण बिनरी लॉग चलाएं बयान जो असफल रहा।

इसका मतलब है कि मुझे मैन्युअल रूप से .index फ़ाइल संपादित करना चाहिए और सब ठीक हो जाएगा। दिलचस्प बात यह है कि .index फ़ाइल एक नियमित पाठ फ़ाइल है। मैंने अभी तक यह भी ध्यान नहीं दिया था।

+0

अरे, मैं हाल ही में इस मुद्दे में भी भाग गया। तुमने क्या किया? मेरे पास 300GB से अधिक लॉग फाइलें हैं? क्या मैं फ़ाइलों को मिटाता हूं, और इंडेक्स टेक्स्ट फ़ाइल की सामग्री? – Spartacus38

+0

मेरे पास एक ही समस्या है जहां बाइनरी लॉग कमांड बार्जरी लॉग को हटा नहीं रहा है और कोई त्रुटि दिखाई नहीं दे रही है। मुझे आश्चर्य है कि मिलान का विचार काम करेगा या नहीं। चूंकि यह एक उत्पादन डीबी है, सर्वर मैं सतर्क हूं। – mezi

+0

यह काम करता है। 2010 से। मैंने उत्पादन में कई बार ऐसा किया था। –

24

आप पुरानी बाइनरी लॉग हटा सकते हैं। उन्हें सीधे हटाने के बजाय, MySQL-statement PURGE BINARY LOGS का उपयोग करना सुरक्षित है जो आपकी mybinlog.index फ़ाइल को भी अपडेट करता है। इस फ़ाइल भंडार जो फ़ाइल नाम द्विआधारी प्रवेश के लिए इस्तेमाल किया गया है,

http://dev.mysql.com/doc/refman/5.0/en/purge-binary-logs.html

आगे देखते हैं, आप अपने MySQL-सर्वर कॉन्फ़िगर स्वचालित रूप से पुराने द्विआधारी लॉग नष्ट करने के लिए कर सकते हैं। उचित मानों के लिए अपने सर्वर कॉन्फ़िगरेशन में वेरिएबल्स max_binlog_size और expire_logs_days सेट करें।

ibdata और ib_logfile फ़ाइलों के पास बाइनरी लॉगिंग के साथ कुछ लेना देना नहीं है। इन्हें innodb स्टोरेज इंजन द्वारा उपयोग किया जाता है। इस तथ्य से गलत मत बनो कि वे बढ़ने लगते नहीं हैं: यदि आपके सर्वर पर innodb-table हैं, तो ये फ़ाइलें महत्वपूर्ण हैं और उन्हें हटाने से डेटा का नुकसान हो सकता है। आप डॉक्स में InnoDB के बारे में अधिक पढ़ सकते हैं:

http://dev.mysql.com/doc/refman/5.0/en/innodb-configuration.html

+0

मैं लॉग फ़ाइलें ज़िप करने और फिर एक और कंप्यूटर जहाँ मैं समय-समय पर यकीन है कि बैकअप मान्य है बनाने के लिए उन्हें लागू करने के नेटवर्क के माध्यम से हस्तांतरण की जरूरत है। अगर मैं उन्हें bzip, एक्सटेंशन .bz2 में बदल जाएगा। मुझे लगता है कि बड़ी अवधि के लोगो उन्हें उस मामले में नहीं हटाएंगे। मैं स्थानांतरण के बाद फ़ाइलों को अनपैक कर सकता था, लेकिन यह ऐसा नहीं लगता है कि इसे कैसे किया जाना चाहिए। –

4
mysql> PURGE BINARY LOGS BEFORE NOW() - INTERVAL 3 DAY; 

3 दिन से पहले सभी बिन फ़ाइलों को हटाएं!

या

PURGE MASTER LOGS BEFORE '2010-10-08 00:00:00'; 
संबंधित मुद्दे