Mysqldump के लिए संसाधनों से बाहर


21

मैं विंडोज सर्वर पर mysqldump करने की कोशिश कर रहा हूं और मुझे निम्न त्रुटि संदेश प्राप्त होता है :

mysqldump: Got error: 23: Out of resources when opening file '.\db\sometable.MYD' (Errcode: 24) when using LOCK TABLES

यहाँ कमांड मैं चला रहा हूँ:

mysqldump -u user -p"pass" --lock-tables --default-character-set=latin1 -e --quick databasename > "query.sql"

Mysql सेवा को पुनरारंभ करने से मदद नहीं मिली।

मुझे हमेशा एक ही तालिका के लिए संदेश मिलता है।

मैंने क्रमशः 64 से 32 और 30 से 10 तक table_cache और max_connections चर को कम करने की कोशिश की है, लेकिन मुझे अभी भी इस बार एक अलग तालिका के लिए केवल त्रुटि मिलती है (और अब से त्रुटि संदेश हमेशा दूसरी तालिका का उल्लेख कर रहा है)।

एक ही स्क्रिप्ट एक दर्जन अन्य विंडोज सर्वर पर चल रही है जिसमें बिना समस्याओं के समान डेटाबेस है।

सभी डेटाबेस में 85 टेबल हैं।


माईएसक्यूएल किस ऑपरेटिंग सिस्टम पर चल रहा है?
डेवी

हर जगह विंडोज।
फिलिप कैरिरे

DB में कितने टेबल हैं? किसी तरह की फ़ाइल डिस्क्रिप्टर सीमा की तरह लगता है।
डेवी

डीबी में 85 टेबल।
फिलिप कारिएरे

विवरण विवरण में जोड़े गए।
फिलिप कारिएरे

जवाबों:


21

यहां के अनुसार - "ओएस त्रुटि कोड 24: बहुत सारी खुली हुई फाइलें" जो कि अधिक सामान्य त्रुटि 23 "संसाधनों से बाहर" के साथ होती हैं।

तो ऐसा लगता है जैसे आप फ़ाइल हैंडल से बाहर चल रहे हैं। यह आमतौर पर सर्वर-एंड सेटिंग / समस्या है, या तो MySQL में, या ओएस में ही।

शायद MySQL में --open-files-limitसेटिंग की जाँच करें / समायोजित करें और देखें कि क्या मदद करता है।

इसके अलावा, शायद डंप को चलाने की कोशिश करें, जबकि कोई और डीबी का उपयोग नहीं कर रहा है, इसके बजाय --single-transactionसेटिंग के साथ --Lock-File, क्योंकि कई लोग सुझाव देते हैं कि यह एक बार में एक टेबल पर काम करेगा, बजाय उन सभी को खोलने के (इसलिए कम फ़ाइल हैंडल का उपयोग करके)।

इसके अलावा आपको संभवतः एक मूल कारण खोजना होगा कि यह विशेष सर्वर संसाधनों से बाहर क्यों चल रहा है। जो संभवत: जितनी संभव हो उतने सेवाओं / प्रक्रियाओं को अक्षम करके समस्या निवारण में शामिल होगा और देखेगा कि डंप गुजरता है या नहीं। फिर वहां से यह पता करें कि अपराधी कौन है जो बहुत सारे संसाधनों को खा रहा है और शायद उन्हें सही तरीके से मुक्त नहीं कर रहा है।


2
- ताला-तालिकाओं के बजाय एकल-लेन-देन ने काम किया। बहुत बहुत धन्यवाद।
फिलिप कैरीयर

अजीब तरह से मैं InnoDB का उपयोग नहीं कर रहा हूँ, लेकिन यह इस पैरामीटर के बिना काम नहीं करता है। मैंने सोचा था कि - एकल-लेनदेन केवल innoDB के साथ प्रासंगिक था।
फिलिप कैरीयर

अच्छा लगा। :) खुशी है कि यह मदद की।
Techie007

4
--lock-all-tablesभी काम करता है, और --single-transactionजब गैर- InnoDB तालिकाओं पर काम करने की असंगति समस्या नहीं है ।
Freiheit

बस स्पष्ट करने के लिए: --single-transactionबलों --lock-tables=off। गैर-लेन-देन तालिकाओं पर इसका उपयोग न करें।
b2ag

6

क्या आप --single-transactionइसके बजाय इसे आज़माने की स्थिति में हैं --lock-tablesजैसे कि तालिकाएँ InnoDB हैं और आप क्लस्टर टेबल का उपयोग नहीं कर रहे हैं और यह भी कि टेबल, ड्रॉप टेबल, रेंबल टेबल, ट्रेंक्यूबल टेबल डंप के दौरान नहीं होगी? सबसे अच्छा यह पुष्टि करें कि यदि आपके पास एक है तो MySQL सपोर्ट ऑर्ग के साथ यह ठीक है।

मैंने केवल यूनिक्स पर यह कोशिश की है, लेकिन मूल रूप से अगर मैं डीबी के साथ 2000 तालिकाओं के साथ कोशिश करता हूं, तो यह आपके समान त्रुटि के साथ विफल रहता है जैसे मैंने अपने सभी फ़ाइल हैंडल का उपयोग किया है।


+1। आप समाधान कर रहे हैं जैसे कि Techie007 ने भी काम किया लेकिन उसने पहले उत्तर दिया इसलिए मैंने उसका उत्तर स्वीकार कर लिया। अभिलेखों के लिए, मैं innoDB का उपयोग नहीं कर रहा हूं।
फिलिप कारिएरे

2

आपको यह त्रुटि मिल सकती है:

MySQL: Errcode: 24 LOCK TABLES का उपयोग करते समय

... अन्य त्रुटियों के साथ जब आप MySQL 5.5 में अपग्रेड करते हैं और आप अपने बैकअप को Plesk या किसी अन्य OS पर क्रियान्वित कर रहे हैं mysqldump

तै होना:

  1. संपादित करें my.cnf
  2. जोड़ें:

    open_files_limit=2048
    
  3. MySQL को पुनरारंभ करें

यदि आप प्राप्त कर रहे हैं:

Mysql.proc से लोड नहीं किया जा सकता। तालिका संभवतः दूषित है (1548)

यह 5.5 में अपग्रेड का परिणाम है। निष्पादित:

mysql_upgrade --force

परीक्षण और CentOS 6.7 और Plesk 12 पर काम किया।


0

मुझे फिलिप जैसी ही समस्या थी। जब मैं डंप करना शुरू करता हूं तो मुझे इस तरह एक त्रुटि दिखाई देती है:

mysqldump: Got error: 23: Out of resources when opening file './c1baznarz/timecard.MYD' (Errcode: 24) when using LOCK TABLES

मैंने साधारण कमांड का उपयोग किया:

mysqldump -uroot -p c1baznarz > c1baznarz.sql

इसलिए, मैं अपने mysqldump में एक और कमांड जोड़ता हूं:

--single-transaction

और डंप तैयार है। तो, मेरे सभी mysqldump क्वेरी इस तरह दिखता है:

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