Ich habe kürzlich ein Upgrade von LTS Ubuntu auf Precise durchgeführt und jetzt weigert sich mysql zu starten. Es klagt über Folgendes, wenn ich versuche, es zu starten:
╰$ sudo service mysql restart
stop: Unknown instance:
start: Job failed to start
Und dies zeigt 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 die vorherigen ib_logs umbenannt, damit sie neu erstellt werden können. Ich komme mit diesem Problem gerade nicht weiter, nachdem ich mir die Google-Ergebnisse 2 Stunden lang angesehen habe.
Antworten:
Nach Überprüfung der Protokolle fand ich den folgenden Fehler:
Ich habe diese Dateien entfernt:
beim
/var/lib/mysql
Dies löste mein Problem nach dem Neustart.
quelle
rm
Befehl wird verwendet, um Dateien zu entfernen, anstatt sie umzubenennen, soweit ich weiß ...ibdata
Datei enthält die Daten (es sei denn, Sie haben eine Datei pro Tabelle). Die ib_logfile-Dateien sind die Wiederholungsprotokolle, die die Daten für datenbankändernde Transaktionen enthalten, die möglicherweise ausgeführt wurden, als / wenn die Datenbank abstürzte. Wenn Sie den Server erfolgreich herunterfahren konnten, kann das Löschen dieser Protokolldateien nicht schaden. Wenn es abgestürzt ist, brauchen Sie sie. Dies ist jedoch eine gültige Antwort. Wenn Ihre Datei my.cnf die Option innodb_log_file_size ändert und diese beiden Dateien nicht mehr übereinstimmen, wird die Fehlermeldung angezeigt, die das OP ausgibt. Löschen / Verschieben, damit neue erstellt werden können, behebt das Problem.mv ib_logfile0 ib_logfile0.bak && mv ib_logfile1 ib_logfile1.bak
.Wenn Sie es wirklich brauchen
skip-innodb
(Anwendungsfall: Geringer Speicherbedarf), müssen Sie es natürlich nicht auskommentieren. Wenn jedoch InnoDB die Standard-Speicher-Engine ist, startet der Server erst, wenn Sie ihm mitteilen, welche Speicher-Engine stattdessen verwendet werden soll, zdefault-storage-engine=myisam
. B. für MyISAM.Also probieren Sie Folgendes:
quelle
default-storage-engine=myisam
in der Datei /etc/my.cnf unter[mysqld]
. Das hat den Trick gemacht. ThxWenn Sie MySQL 5.6 oder höher verwenden und InnoDB deaktivieren möchten, vergessen Sie nicht " --default-tmp-storage " oder es funktioniert nicht:
http://dev.mysql.com/doc/refman/5.6/de/innodb-parameters.html#option_mysqld_ignore-builtin-innodb
Sie können dies zu Ihrer my.cnf hinzufügen:
Nur um sicherzugehen, dass es funktioniert.
quelle
default-storage-engine
unddefault-tmp-storage-engine
danke.Überprüfen Sie Ihr MySQL-Fehlerprotokoll.
Wenn in Ihrem Protokoll steht (wie in meinem):
Sie haben nicht genügend Speicher, um die Standardpuffergröße von 128 MB zu verwenden
Bearbeiten Sie die Konfigurationsdatei /etc/mysql/my.cnf und fügen Sie eine Zeile hinzu, um eine kleinere Größe für innodb_buffer_pool_size anzugeben.
Speichern Sie die Konfigurationsdatei und starten Sie mysql
quelle
Probieren Sie zwei weitere Dinge aus. 1. Verringern Sie die Größe des Innodb-Pufferpools. 2. Bearbeiten Sie das MySQL-Startskript und fügen Sie die Option --innodb hinzu.
Ich frage mich auch, ob Ihr Paket fehlerhaft ist. Könnten Sie eine andere Nebenversion ausprobieren?
Außerdem nehme ich an, dass Ihr MySQL-Server ebenfalls aktualisiert wurde. Vielleicht ist diese Version kaputt? Präzise ist noch nicht endgültig.
quelle
Ich habe diese Fehlermeldung erhalten, als ich den von mir verwendeten Speicherort gelöscht habe
tmpdir
. Wenn Sie kürzlich Ihre geändert habentmpdir
, möchten Sie möglicherweise überprüfen, ob es sich um einen gültigen, beschreibbaren Speicherort handelt.quelle