अज्ञात / असमर्थित संग्रहण इंजन: InnoDB | MySQL उबंटू


45

मैंने हाल ही में पिछले LTS Ubuntu से Precise में अपग्रेड किया और अब mysql को शुरू करने से मना कर दिया। जब मैं इसे शुरू करने का प्रयास करता हूं तो यह निम्नलिखित की शिकायत करता है:

╰$ sudo service mysql restart
stop: Unknown instance:
start: Job failed to start

और यह "/var/log/mysql/error.log" में दिखाया गया है:

120415 23:01:09 [Note] Plugin 'InnoDB' is disabled.
120415 23:01:09 [Note] Plugin 'FEDERATED' is disabled.
120415 23:01:09 [ERROR] Unknown/unsupported storage engine: InnoDB
120415 23:01:09 [ERROR] Aborting

120415 23:01:09 [Note] /usr/sbin/mysqld: Shutdown complete

मैंने सभी mysql निर्देशिकाओं पर अनुमतियाँ जाँच ली हैं ताकि यह सुनिश्चित हो सके कि इसका स्वामित्व था और मैंने previou ib_logs का भी नाम बदला ताकि यह उन्हें रीमेक कर सके। मैं अभी नहीं मिल रहा है, जहां 2 घंटे के लिए Google परिणामों को देखने के बाद अभी इस मुद्दे के साथ है।


संयोग से, मुझे my.cnf में "Skip_innodb" प्रविष्टि पर टिप्पणी करके mysql चलाने के लिए मिला। लेकिन मैं काफी हद तक निश्चित हूं कि मुझे इस तरह से हल नहीं करना था।
गैरेट

कृपया my.cnf से सभी चर दिखाएं जो कि
निर्दोष

जवाबों:


34

लॉग की जाँच के बाद मुझे निम्नलिखित त्रुटि मिली:

[ERROR] Unknown/unsupported storage engine: InnoDB

मैंने ये फाइलें हटा दी हैं:

rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ib_logfile1 

पर /var/lib/mysql

इसने मेरी समस्या को पुनः आरंभ करने के बाद हल किया।


7
rmआदेश उन्हें नाम बदलने फ़ाइलों के बजाय जहाँ तक निकालने के लिए के रूप में मुझे पता है प्रयोग किया जाता है ...
इटाई Ganot

2
उन फ़ाइलों में आपके डेटाबेस का वास्तविक डेटा होता है । आप उन्हें हटाना नहीं चाहते हैं।
स्टेफन लासवर्स्की

नहीं, ibdataफ़ाइल में डेटा होता है (जब तक कि आपके पास फ़ाइल-प्रति-तालिका न हो)। Ib_logfile फाइलें रीप्ले लॉग होती हैं, जिसमें डेटाबेस-परिवर्तन वाले लेनदेन के लिए डेटा होता है जो डेटाबेस के दुर्घटनाग्रस्त होने पर / प्रक्रिया में हो सकता है। यदि आप सर्वर को सफलतापूर्वक बंद करने में सक्षम थे, तो इन लॉग फ़ाइलों को हटाने से आपको नुकसान नहीं होगा। यदि यह दुर्घटनाग्रस्त हो गया, तो आपको उनकी आवश्यकता है। लेकिन यह एक मान्य उत्तर है। यदि आपकी my.cnf फ़ाइल innodb_log_file_size विकल्प को बदल देती है और यह अब उन दो फ़ाइलों से मेल नहीं खाती है, तो आपको वह त्रुटि संदेश मिलेगा जो ओपी कहता है। नए लोगों को हटाने / स्थानांतरित करने से इसे ठीक किया जा सकता है।
Safado

2
केवल 5 मिनट के लिए संपादन क्यों किया जा सकता है यह मेरे से परे है ... मुझे कहना चाहिए कि यह उपर्युक्त त्रुटि के लिए एक संभावित निर्धारण है। जैसा कि ओपी ने कहा, यह वह फिक्स नहीं था जिसकी उन्हें जरूरत थी।
Safado

1
आप हमेशा उनका नाम बदल सकते हैं, उदा mv ib_logfile0 ib_logfile0.bak && mv ib_logfile1 ib_logfile1.bak
केनोरब

23

यदि आपको वास्तव में जरूरत है skip-innodb(केस केस: लो मेमोरी फुटप्रिंट का उपयोग करें), तो निश्चित रूप से आपको इसे टिप्पणी करने की आवश्यकता नहीं है। हालाँकि, यदि InnoDB डिफ़ॉल्ट भंडारण इंजन है, तो सर्वर तब तक शुरू करने में विफल रहेगा जब तक आप यह नहीं बता देते हैं कि इसके बजाय किस संग्रहण इंजन का उपयोग करना है, उदाहरण के default-storage-engine=myisamलिए MyISAM।

तो, यह प्रयास करें:

$ sudo -u mysql mysqld --skip-innodb --default-storage-engine=myisam

6
यदि आप "Skip_innodb" करना चाहते हैं, तो [mysqld] सेक्शन में /etc/mysql/my.cnf में "डिफ़ॉल्ट-स्टोरेज-इंजन = myisam" जोड़ने का प्रयास करें ।
पिनकोड किया गया

खूबसूरती से काम करता है। चीयर्स!
Boann

4
यदि आप निर्दोष-समर्थन चाहते हैं तो क्या होगा?
निलज़ोर

1
सेंटोस 7 default-storage-engine=myisamपर मारियाडब के तहत फ़ाइल /etc/my.cnf पर जोड़ा गया [mysqld]। यही चाल चली। Thx
दामोदर बशयाल

12

यदि आप MySQL 5.6+ का उपयोग कर रहे हैं और InnoDB को अक्षम करना चाहते हैं, तो " --default-tmp-storage " या न भूलें :

InnoDB को निष्क्रिय करने के लिए, --innodb = OFF या --skip-innodb का उपयोग करें। इस स्थिति में, क्योंकि डिफ़ॉल्ट भंडारण इंजन InnoDB है, सर्वर तब तक शुरू नहीं होगा जब तक कि आप का उपयोग नहीं करते हैं --default- स्टोरेज इंजन और --default-tmp-storage-engine दोनों को स्थायी और कुछ के लिए डिफ़ॉल्ट सेट करने के लिए डिफ़ॉल्ट सेट करने के लिए टेम्पररी टेबल।

http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#option_mysqld_ignore-builtin-innodb

आप इसे अपने my.cnf में जोड़ सकते हैं:

[mysqld] 
innodb=OFF 
ignore-builtin-innodb 
skip-innodb
default-storage-engine=myisam 
default-tmp-storage-engine=myisam

बस यह सुनिश्चित करने के लिए कि यह काम करेगा।


+1, कभी भी आधिकारिक दस्तावेज़ को न देखें। इसे सेट करना चाहिए default-storage-engineऔर default-tmp-storage-engine, धन्यवाद।
गिबर्नो

7

अपने mysql त्रुटि लॉग की जाँच करें।

tail -100 /var/log/mysql/error.log

यदि आपका लॉग कहता है (जैसे मेरा किया):

InnoDB: प्रारंभिक बफर पूल, आकार = 128.0M
InnoDB: mmap (137363456 बाइट्स) विफल; गलत 12
[त्रुटि] InnoDB: बफर पूल के लिए स्मृति आवंटित नहीं कर सकते

128M के डिफ़ॉल्ट बफर आकार का उपयोग करने के लिए आपके पास पर्याप्त मेमोरी नहीं है

एक छोटी innodb_buffer_pool_size निर्दिष्ट करने के लिए एक पंक्ति जोड़कर config फ़ाइल /etc/mysql/my.cnf संपादित करें ।

# make the buffer pool smaller than 128M since we only have 1 GB of total RAM
innodb_buffer_pool_size = 16M

कॉन्फ़िगरेशन फ़ाइल सहेजें, और mysql प्रारंभ करें

sudo service mysql start

यहाँ पर है। लेकिन वेबसर्वर या रैम खाने वाली किसी चीज की हैंगिंग प्रॉसेस भी हो सकती है, इसकी भी जांच करें।
sjas

0

2 और चीजें आज़माएं। 1. निर्दोष बफर पूल आकार को कम करें। 2. mysql प्रारंभिक स्क्रिप्ट संपादित करें और --innodb विकल्प जोड़ें।

मुझे आश्चर्य है कि अगर आपका पैकेज छोटी गाड़ी है। क्या आप एक अलग लघु संस्करण आज़मा सकते हैं?

इसके अलावा, मुझे लगता है कि आपका mysql सर्वर भी अपग्रेड हो गया है? शायद वह संस्करण टूट गया है? सटीक अभी तक अंतिम नहीं है।


पहले से ही किया है, कोई प्रभाव नहीं है।
गैरेट

क्षमा करें, इसे कुछ चीज़ों के साथ संपादित करने का प्रयास करें, एक बुरे पैकेज की तरह। Mysql.com वर्जन या पर्कोना का उपयोग करने का प्रयास करें जो आमतौर पर अधिक स्थिर होते हैं।
जॉन्शेन ६४

यह भी सुनिश्चित करें कि नया स्थापित होने पर पुराना पैकेज पूरी तरह से शुद्ध हो।
जॉन्शेन ६४

पैकेज पूरी तरह से खो डेटाबेस जानकारी में परिणाम होगा?
गैरेट

नहीं करना चाहिए, लेकिन सुरक्षित होने के लिए आपको हमेशा अपने डीबीएस का बैकअप लेना चाहिए।
जॉन्शेन ६४

0

मुझे यह त्रुटि तब मिली जब मैंने उस स्थान को हटा दिया जिसका मैं उपयोग करता हूं tmpdir। यदि आपने हाल ही में अपना परिवर्तन किया है tmpdir, तो आप जाँच सकते हैं कि यह एक वैध, उपयुक्त स्थान है।

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