Frage Unbekannte / nicht unterstützte Speicher-Engine: InnoDB | MySQL Ubuntu


Ich habe kürzlich von dem vorherigen LTS Ubuntu auf Precise aufgerüstet und jetzt weigert sich mysql zu starten. Es beschwert sich über Folgendes, wenn ich versuche es zu starten:

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

Und das zeigt sich in "/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

Ich habe die Berechtigungen für alle mysql-Verzeichnisse überprüft, um sicherzustellen, dass sie Eigentümer sind, und ich habe auch die vorherigen ib_logs umbenannt, damit sie sie neu erstellen können. Ich bekomme gerade keine Stelle mit diesem Problem, nachdem ich 2 Stunden lang Google-Ergebnisse angesehen habe.


35
2018-04-15 23:24


Ursprung


Übrigens habe ich mysql zum laufen gebracht, indem ich den Eintrag "skip_innodb" in my.cnf kommentiert habe. Aber ich bin ziemlich sicher, dass ich das nicht so lösen sollte. - Garrett
Bitte zeigen Sie alle Variablen aus my.cnf, die innodb Einstellungen sind - RolandoMySQLDBA


Antworten:


Nach dem Überprüfen der Protokolle habe ich den folgenden Fehler gefunden:

[ERROR] Unknown/unsupported storage engine: InnoDB

Ich habe diese Dateien entfernt:

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

beim /var/lib/mysql

Dies löste mein Problem nach dem Neustart.


27
2018-05-21 05:18



das rm Befehl wird verwendet, um Dateien zu entfernen, anstatt sie umzubenennen, soweit ich weiß ... - Itai Ganot
Diese Dateien enthalten die wirkliche Datenfür Ihre Datenbank. Sie möchten sie nicht löschen. - Stefan Lasiewski
Nein, die ibdata Datei enthält die Daten (außer Sie haben Datei-pro-Tabelle). Die ib_logfile-Dateien sind die Replay-Protokolle, die die Daten für datenbankändernde Transaktionen enthalten, die beim Absturz der Datenbank in Bearbeitung waren. Wenn Sie den Server erfolgreich herunterfahren konnten, wird Ihnen das Löschen dieser Protokolldateien nicht schaden. Wenn es abgestürzt ist, dann brauchst du sie. Aber das ist eine gültige Antwort. Wenn Ihre my.cnf-Datei die Option innodb_log_file_size ändert und sie nicht mehr mit diesen beiden Dateien übereinstimmt, erhalten Sie die Fehlermeldung, die das OP angibt. Löschen / verschieben so neue können behoben werden. - Safado
Warum Bearbeitungen nur für 5 Minuten gemacht werden können, ist mir ein Rätsel ... Ich hätte sagen sollen, es ist ein Potenzial Fix für den oben genannten Fehler. Wie vom OP angegeben, war es nicht die Lösung, die er brauchte. - Safado
Ich konnte innodb nicht ignorieren oder übersprin- gen, wie ich zur Hand hatte, über 10 Jahre Daten von einem Kunden in dieser ibdata-Datei. Die einzige Option bestand darin, die "innodb" -Engine aktiviert zu lassen und diese Daten mit dem mysql-Server arbeiten zu lassen. - ramonrails


Wenn du wirklich brauchst skip-innodb (Anwendungsfall: geringer Speicherbedarf), dann müssen Sie es natürlich nicht auskommentieren. Wenn InnoDB jedoch die Standardspeicher-Engine ist, kann der Server nicht gestartet werden, bis Sie ihm mitteilen, welche Speicher-Engine stattdessen verwendet werden soll, z. default-storage-engine=myisam für MyISAM.

Also, versuche das:

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

21
2018-04-24 19:03



Versuchen Sie, "/etc/mysql/my.cnf" im Verzeichnis "default-storage-engine = myisam" hinzuzufügen [mysqld] Abschnitt, wenn Sie "Skip_innodb" haben möchten. - pincoded
Funktioniert wunderbar. Prost! - Boann
Was, wenn Sie innodb-Unterstützung wünschen? - Nilzor
Mariadb auf Centos 7 hinzugefügt default-storage-engine=myisam in Datei /etc/my.cnf unter [mysqld]. Das hat den Trick gemacht. Vielen Dank - Damodar Bashyal


Wenn Sie MySQL 5.6+ verwenden und InnoDB deaktivieren möchten, vergessen Sie nicht "--default-tmp-Speicher"oder es wird nicht funktionieren:

Verwenden Sie --innodb = OFF oder --skip-innodb, um InnoDB zu deaktivieren. In diesem Fall,   Da die Standardspeicher-Engine InnoDB ist, wird der Server dies nicht tun   starten, wenn Sie nicht auch --default-storage-engine und   --default-tmp-storage-engine, um den Standardwert für eine andere Engine für permanente und TEMPORARY-Tabellen festzulegen.

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

Sie können dies zu Ihrer my.cnf hinzufügen:

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

nur um sicherzustellen, dass es funktioniert.


12
2018-04-23 21:13



+1, Niemals das offizielle Dokument beachten. es sollte eingestellt werden default-storage-engine und default-tmp-storage-engine, Vielen Dank. - Giberno


Überprüfen Sie Ihr mysql Fehlerprotokoll.

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

Wenn dein Protokoll sagt (wie meiner):

InnoDB: Initialisierung des Pufferpools, Größe = 128.0M
InnoDB: mmap (137363456 Bytes) fehlgeschlagen; errno 12
[FEHLER] InnoDB: Speicher für den Pufferpool kann nicht zugewiesen werden

Sie haben nicht genügend Arbeitsspeicher, um die Standardpuffergröße von 128 M zu verwenden

Bearbeiten Sie die Konfigurationsdatei /etc/mysql/my.cnf Hinzufügen einer Zeile, um eine kleinere innodb_buffer_pool_size anzugeben.

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

Speichern Sie die Konfigurationsdatei und starten Sie mysql

sudo service mysql start

4
2018-05-18 16:27



Ist hier richtig. Es können aber auch hängende Prozesse des Webservers oder etwas sein, was den RAM auffrischt, überprüfe das auch. - sjas


Probiere 2 weitere Dinge aus. 1. Verringern Sie die Größe des Pools für innodb-Puffer. 2. Bearbeite mysql initial script und füge die Option --innodb hinzu.

Ich frage mich auch, ob dein Paket fehlerhaft ist. Könnten Sie eine andere Nebenversion versuchen?

Außerdem nehme ich an, dass Ihr MySQL-Server ebenfalls aktualisiert wurde? Vielleicht ist diese Version kaputt? Precise ist noch nicht endgültig.


0
2018-04-16 03:17



Habe das schon getan, ohne Erfolg. - Garrett
Entschuldigung, habe es mit ein paar Sachen zum Ausprobieren bearbeitet, eher wie ein schlechtes Paket. Versuchen Sie, die mysql.com-Version oder percona zu verwenden, die normalerweise stabiler sind. - johnshen64
Stellen Sie außerdem sicher, dass das alte Paket vollständig gelöscht ist, wenn das neue Paket installiert wird. - johnshen64
Würde das vollständige Löschen des Pakets zu verlorenen Datenbankinformationen führen? - Garrett
Sollte nicht, aber um sicher zu sein, sollten Sie immer Ihre DBS sichern. - johnshen64


Ich habe diesen Fehler erhalten, als ich den Standort gelöscht habe, für den ich verwende tmpdir. Wenn Sie kürzlich Ihre tmpdirVielleicht möchten Sie überprüfen, ob es sich um einen gültigen schreibbaren Speicherort handelt.


0
2017-08-14 18:02