Postgresql में डिस्क स्थान से भरा हुआ


14

मेरे पास एक Django वेब एप्लिकेशन है जिसमें पोस्टग्रैसकल 9.3.10 बैकएंड (लिनक्स ओएस में बैठे) है। मैं डिस्क पूर्ण त्रुटि में भाग गया, जैसे कि अगर मैं किसी तालिका को छांटने की कोशिश करता हूं, तो मुझे इस प्रकार की त्रुटियां मिलती हैं:

ERROR:  could not extend file "base/30137/33186048": No space left on device
HINT:  Check free disk space.

मैं आसानी से सर्वर में अधिक डिस्क स्थान नहीं जोड़ सकता, न ही मैं इस वीएम पर सामान हटा सकता हूं। हालाँकि, कई टेबल हैं जो ट्रंकेशन के लिए उम्मीदवार हैं, लेकिन लगता है कि मैं उन्हें अब या तो नहीं काट सकता।

क्या कोई मुझे सलाह दे सकता है कि मैं यहां क्या कर सकता हूं? यह मेरे उत्पादन सर्वर को मुश्किल से मार रहा है, और मैं यहां एक आकस्मिक डीबीए का थोड़ा सा हूं, इसलिए पूरी तरह से स्टम्प्ड हूं।


आप कुछ स्थान को पुनः प्राप्त कर सकते हैं यदि आप (अस्थायी रूप से) एक सूचकांक छोड़ सकते हैं ... तालिकाओं को
काटें

जवाबों:


9

क्योंकि PostgreSQL को तालिकाओं में कोई भी परिवर्तन करने से पहले वाल लिखना चाहिए, चीजों को हटाने और अधिक डिस्क स्थान को मुक्त करने के लिए इसे मुक्त डिस्क स्थान की आवश्यकता होती है।

यदि आप डिस्क को भरने देते हैं, तो आप PostgreSQL के भीतर से पुनर्प्राप्त नहीं कर सकते। यहां तक ​​कि TRUNCATEअभी भी वाल को लिखना है।

इसलिए आपको वॉल्यूम पर कुछ स्थान खाली करना चाहिए , या वॉल्यूम का विस्तार करना चाहिए । यदि आपकी PostgreSQL लॉग फाइलें pg_logडेटा निर्देशिका में हैं, तो आप सुरक्षित रूप से उनमें से कुछ को हटा सकते हैं और Pg को पुनरारंभ कर सकते हैं।

करो नहीं हटाना pg_xlogया pg_clog। ये सर्वर त्रुटि लॉग नहीं हैं, वे डेटाबेस के महत्वपूर्ण भाग हैं, लेन-देन लॉग और कमिट लॉग।


TRUNCATEचलने के लिए लिखना क्यों पड़ता है, और वाल में उस प्रविष्टि को क्या दिखता है?
इवान कैरोल

"truncate पूर्ण डेटा को लॉग नहीं करता है, केवल एक तथ्य यह है कि एक truncate हुआ था। इसे वापस रोल करने में सक्षम होने के लिए, अंतर्निहित फ़ाइल को लेन-देन होने तक चारों ओर रखा जाता है।" [स्रोत] ( postgresql.org/message-id/… तो दीवार में ट्रंकट की प्रविष्टि सुपर छोटी है। मात्र बाइट्स। यदि वह अंतरिक्ष लोड की संपूर्णता की आवश्यकता थी, तो आप शायद इसे rm -rf /tmp/*अपने vimrc द्वारा प्राप्त कर सकते हैं या कर सकते हैं ।
इवान कैरोल।

@EvanCarroll rm -rf /tmp/*... जो चीजें आप चाहते हैं, उन्हें भी हटा सकते हैं, जैसे कि एप्लिकेशन सॉकेट आदि। अधिक चयनात्मक होना बेहतर है। जरूरत के लिए जगह के रूप में, आप सही हैं, यह न्यूनतम है - एक 8k खाली तालिका + कुछ ट्रंक, एक्सिड आवंटन, कमिट रिकॉर्ड, आदि के लिए वाल प्रविष्टियों की
क्रेग रिंगर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.