MySQL / लेखन त्रुटि (इरोड 28)


84

हमारे वेब अनुप्रयोगों में से एक के साथ निम्नलिखित त्रुटि है -

Query3 failed: Error writing file '/tmp/MY1fnqpm' (Errcode: 28) ... INSERT MailList... (removed the rest of the query for security reasons)

किसी भी विचार - यह मेरे सर्वर पर कुछ हार्ड डिस्क स्थान मुद्दा है?


3
क्या पर्याप्त डिस्क स्थान उपलब्ध है?
NDM

4
अपने डिवाइस पर कुछ जगह खाली करें।
अश्विन

1
मेरे पास यह त्रुटि थी आज डिवाइस पर पॉप अप केवल 11% उपयोग के साथ। मैंने मशीन को रिबूट किया, और यह उसके बाद ठीक था, लेकिन ऐसा लगता है कि यह त्रुटि तब भी हो सकती है जब अंतरिक्ष उपलब्ध हो।
एल्कविस

जैसा कि त्रुटि कोड 28 के ऊपर बताया गया है कि अपर्याप्त डिस्क स्थान है। कृपया ध्यान दें कि यह एक सर्वर त्रुटि संदेश है, न कि क्लाइंट। इसलिए सुनिश्चित करें कि आप सही सर्वर पर जाँच कर रहे हैं।
सेर्गेई सिंकोवस्की

जवाबों:


117

perrorकमांड का उपयोग करें :

$ perror 28
OS error code  28:  No space left on device

जब तक आपके सिस्टम पर त्रुटि कोड अलग नहीं होते हैं, तब तक आपका फाइल सिस्टम भरा हुआ है।


7
"आपका फाइल सिस्टम भरा हुआ है"। किस तरफ? db सर्वर या db क्लाइंट?
मैरिनो एक

यह db_server पर है। while true; do df -h /tmp; sleep 3; doneअस्थायी तालिका द्वारा कितनी जगह का उपयोग किया जाता है यह देखने के लिए आप स्क्रिप्ट चलाते समय उपयोग कर सकते हैं ।
विनीसियस.लिफर

20

हमने इसी तरह के मुद्दे का अनुभव किया है, और समस्या थी MySQL का उपयोग / tmp निर्देशिका इसकी आवश्यकताओं के लिए (यह डिफ़ॉल्ट कॉन्फ़िगरेशन है)। और / tmp अपने स्वयं के विभाजन पर स्थित था, जिसमें बड़े MySQL अनुरोधों के लिए बहुत कम जगह थी।

अधिक जानकारी के लिए इस उत्तर पर एक नज़र डालें: https://stackoverflow.com/a/3716778/994302


18

मुझे एक ही समस्या थी लेकिन डिस्क स्थान ठीक था (केवल 40% पूर्ण)। समस्या इनोड्स की थी, मेरे पास बहुत सारी छोटी फाइलें थीं और मेरे इनोड्स भरे हुए थे।

आप डीएफआई के साथ इनोड स्थिति की जांच कर सकते हैं


10

त्रुटि का अर्थ है कि आपके पास MySQL द्वारा आवश्यक अस्थायी फ़ाइलों को बनाने के लिए पर्याप्त स्थान नहीं है।

पहली चीज जो आप कोशिश कर सकते हैं वह है आपके /tmp/विभाजन के आकार का विस्तार करना । यदि आप LVM के अधीन हैं, तो lvextendकमांड की जाँच करें ।

यदि आप अपने विभाजन के आकार को बढ़ाने में सक्षम नहीं हैं, तो आप /tmp/MySQL कॉन्फ़िगरेशन में काम कर सकते हैं, (आमतौर पर ) फ़ाइल को संपादित करेंmy.cnf/etc/mysql/my.cnf और इस पंक्ति को देखें:

tmpdir = /tmp/

इसे आप जो चाहें (उदाहरण के लिए /var/tmp/) बदल दें। बस जगह होना सुनिश्चित करें और नई निर्देशिका में mysql उपयोगकर्ता के लिए लिखित अनुमति प्रदान करें।

उम्मीद है की यह मदद करेगा!


4

निम्नलिखित कोड चलाएँ:

du -sh / var / log / mysql

शायद mysql बाइनरी लॉग्स ने मेमोरी को भर दिया, यदि हां, तो पुराने लॉग को हटाने और सर्वर को पुनरारंभ करने का पालन करें। इसके अलावा my.cnf में जोड़ें:

expire_logs_days = 3


डु: एक्सेस नहीं कर सकता `/ var / log / mysql ': ऐसी कोई फ़ाइल या निर्देशिका नहीं
उपयोगकर्ता

होना चाहिएdu -sh /var/log/mysql.log
निकिता

1

मेरे पास यही त्रुटि थी और समस्या बस मेरी वर्चुअल मशीन पर पर्याप्त जगह नहीं थी। मैंने कुछ अनावश्यक फ़ाइलों को हटा दिया और यह फिर से काम करना शुरू कर दिया।

मेरी स्मृति / डिस्क स्थान आवंटन कुछ इस तरह से देखा गया

df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   37G   37G  127M 100% /
...

0

यदि आप इस लाइन का उपयोग करने की कोशिश कर सकते हैं, तो दूसरा काम नहीं करता है:

du -sh / var / lib / mysql / database_Name

आप अपने होस्ट के साथ भी जांच कर सकते हैं और देखना चाहते हैं कि वे आपके डेटाबेस को कितना बड़ा होने देते हैं।


0

Xampp उपयोगकर्ताओं के लिए: मेरे अनुभव पर, समस्या '0' नाम की एक फ़ाइल और 'mysql' फ़ोल्डर में स्थित थी। आकार बहुत बड़ा था (मेरा विस्फोट लगभग 256 Gb था)। इसके हटने से समस्या ठीक हो गई।


0

यह त्रुटि तब होती है जब आपके पास विभाजन में पर्याप्त स्थान नहीं होता है। आमतौर पर MYSQL लिनक्स सर्वर पर / tmp का उपयोग करता है। यह कुछ प्रश्नों के साथ हो सकता है क्योंकि लुकअप या तो बहुत अधिक डेटा लौटा रहा था, या संभवत: केवल बहुत सारे डेटा के माध्यम से बड़ी मंदिर फ़ाइलों को बनाने के माध्यम से स्थानांतरण कर रहा था।

अपना /etc/mysql/my.cnf संपादित करें

tmpdir = / your / new / dir

जैसे

tmpdir = / var / tmp

/ Tmp से अधिक जगह के साथ आवंटित किया जाना चाहिए जो कि आमतौर पर स्वयं के विभाजन में है।


0

आज। मुझे एक ही समस्या है ... मेरा समाधान:

1) चेक इनोड: df -i मैंने देखा:

root@vm22433:/etc/mysql# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 124696 304 124392 1% /dev
tmpfs 127514 452 127062 1% /run
/dev/vda1 1969920 1969920 0 100% /
tmpfs 127514 1 127513 1% /dev/shm
tmpfs 127514 3 127511 1% /run/lock
tmpfs 127514 15 127499 1% /sys/fs/cgroup
tmpfs 127514 12 127502 1% /run/user/1002

2) मैंने यह देखना शुरू किया कि कौन से फोल्डर अधिकतम संख्या में इनोड का उपयोग करते हैं:

 for i in /*; do echo $i; find $i |wc -l; done

जल्द ही मुझे / home / tomnolane / tmp फ़ोल्डर में मिला, जिसमें बड़ी संख्या में फाइलें थीं।

3) मैंने हटाया / घर / टोमोलेन / टैम्प फोल्डर PROFIT।

4) की जाँच की:

Filesystem      Inodes  IUsed   IFree IUse% Mounted on
udev            124696    304  124392    1% /dev
tmpfs           127514    454  127060    1% /run
/dev/vda1      1969920 450857 1519063   23% /
tmpfs           127514      1  127513    1% /dev/shm
tmpfs           127514      3  127511    1% /run/lock
tmpfs           127514     15  127499    1% /sys/fs/cgroup
tmpfs           127514     12  127502    1% /run/user/1002

यह ठीक है।

5) restart mysql service- यह ठीक है !!!!

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