MySQL-Startfehler InnoDB: Sperren nicht möglich/ibdata1-Fehler

MySQL-Startfehler InnoDB: Sperren nicht möglich/ibdata1-Fehler

Beim Starten von MySQL in einer OS X-Umgebung wird eine Fehlermeldung angezeigt:

016-03-03T00:02:30.483037Z 0 [FEHLER] InnoDB: ./ibdata1 kann nicht gesperrt werden. Fehler: 35
2016-03-03T00:02:30.483100Z 0 [Hinweis] InnoDB: Überprüfen Sie, dass Sie nicht bereits einen anderen mysqld-Prozess haben, der dieselben InnoDB-Daten oder Protokolldateien verwendet.

Das Terminal druckt das obige Fehlerprotokoll wiederholt aus. Aus dem Fehlerprotokoll geht hervor, dass ein anderer mysqld-Prozess die Datei ./ibdata1 belegt hat. Verwenden Sie daher den Befehl ps, um zu überprüfen, ob ein mysqld-Prozess ausgeführt wird:

ps -ef |grep mysqld
74 7711 1 0 8:04 Uhr?? 0:00.34 /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid

Es wurde festgestellt, dass ein 7711-Prozess ausgeführt wurde, daher wurde dieser zwangsweise beendet:

sudo töten -9 7711

Nochmal mit ps abfragen:

ps -ef |grep mysqld
74 7759 1 0 8:10 Uhr?? 0:00.29 /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid

Es ist immer noch da, aber die PID hat sich vom ursprünglichen 7711 auf den aktuellen 7759 geändert. Sehen Sie dann nach, welche Dateien der mysqld-Prozess geöffnet hat:

lsof -c mysqld

Der Prozess hat keine Dateien geöffnet, das ist das Problem.

Mac OS X, lsof zeigt nur Ihre eigenen Prozesse an, es sei denn, Sie führen es als Root mit sudo aus

Also lauf noch einmal:

sudo lsof -c mysqld
BEFEHL PID BENUTZER FD TYP GERÄTEGRÖSSE/AUS KNOTENNAME
mysqld 8655 _mysql cwd DIR 1,4 544 3090250 /usr/local/mysql/data
mysqld 8655 _mysql.txt REG 1,4 31130736 3089789 /usr/local/mysql/bin/mysqld

Tatsächlich habe ich festgestellt, dass ein echter mysqld-Prozess ausgeführt wird, der auch diese mysql-Dateien belegt. Nach einigem Googlen habe ich festgestellt, dass MySQL unter OS X völlig anders gestartet wird als unter Linux. Die korrekte Methode zum Starten/Neustarten von MySQL unter OS X lautet:

sudo launchctl unload -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

Sehen wir nun nach, ob noch ein mysqld-Prozess vorhanden ist:

ps -ef |grep mysqld

Nun, ich habe festgestellt, dass es tatsächlich weg ist, also habe ich MySQL erneut gestartet:

sudo launchctl load -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

Das Problem ist endlich gelöst, aber noch nicht vorbei. Wir müssen das Prinzip herausfinden.

Was ist LAUNCHD?

Launchd ist ein Schlüsselprozess, der seit 10.4 in Mac OS X eingeführt wurde. Er wird zum Initialisieren der Systemumgebung verwendet. Er ist der erste Prozess, der in der Betriebssystemumgebung gestartet wird, nachdem der Kernel erfolgreich geladen wurde. Herkömmliches Linux verwendet /etc/rc.* oder /etc/init, um Dienste zu verwalten, die beim Booten gestartet werden sollen, während OS X zu deren Verwaltung launchd verwendet. Auf diese Weise lassen sich Startelemente sehr einfach konfigurieren und es wird nur eine plist-Datei benötigt. Die plist-Dateien im Verzeichnis /Library/LaunchDaemons sind allesamt Prozesse, die unmittelbar nach dem Systemstart gestartet werden. Verwenden Sie den Befehl launchctl, um die plist-Datei zu laden/entladen. Nach dem Laden der Konfigurationsdatei wird das Programm gestartet und nach dem Entladen der Konfigurationsdatei wird das Programm geschlossen.

Versuchen Sie nach der Deinstallation der Konfigurationsdatei, den MySQL-Prozess direkt mit dem Befehl mysqld zu starten:

/usr/local/mysql/bin/mysqld
2016-03-03T01:35:50.359258Z 0 [FEHLER] InnoDB: ./ib_logfile0 kann nicht im Lese-/Schreibmodus geöffnet werden.
2016-03-03T01:35:50.359283Z 0 [FEHLER] InnoDB: Plugin-Initialisierung mit Fehler abgebrochen Allgemeiner Fehler
2016-03-03T01:35:50.670517Z 0 [FEHLER] Die Initialisierungsfunktion des Plugins „InnoDB“ hat einen Fehler zurückgegeben.
2016-03-03T01:35:50.670555Z 0 [FEHLER] Die Registrierung des Plugins „InnoDB“ als STORAGE ENGINE ist fehlgeschlagen.
2016-03-03T01:35:50.670568Z 0 [FEHLER] Initialisierung der Plugins fehlgeschlagen.
2016-03-03T01:35:50.670574Z 0 [FEHLER] Abbruch

ib_logfile0 kann nicht geöffnet werden. Es handelt sich wahrscheinlich um eine Benutzerberechtigungsdatei. MySQL kann mit dem aktuellen Systembenutzer nicht gestartet werden. Fügen Sie dann sudo hinzu und starten Sie es als Root:

2016-03-03T01:38:10.977313Z 0 [FEHLER] Schwerwiegender Fehler: Lesen Sie bitte den Abschnitt „Sicherheit“ im Handbuch, um herauszufinden, wie Sie mysqld als Root ausführen!
2016-03-03T01:38:10.977339Z 0 [FEHLER] Abbruch
2016-03-03T01:38:10.977350Z 0 [Hinweis] Binlog-Ende
2016-03-03T01:38:10.977410Z 0 [Hinweis] /usr/local/mysql/bin/mysqld: Herunterfahren abgeschlossen

Sagen Sie mir, ich soll das MySQL-Sicherheitshandbuch lesen und es mit launchd starten.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Analyse der Unterschiede zwischen Mysql InnoDB und MyISAM
  • So ermitteln Sie die Höhe des MySQL InnoDB B+-Baums
  • Unterschiede zwischen MySQL MyISAM und InnoDB
  • Beschreiben Sie kurz die MySQL InnoDB-Speicher-Engine
  • Detaillierte Erläuterung der MySQL Innodb-Speicherstruktur und der Speicherung von Nullwerten
  • Schritte zur Überprüfung der MySQL InnoDB-Row_ID-Grenzwertüberschreitung
  • Wie können die Transaktionseigenschaften von MySQL InnoDB sichergestellt werden?
  • Ausführliche Erklärung des Sperrmechanismus in MySQL InnoDB
  • Detaillierte Erklärung, wie MySQL (InnoDB) mit Deadlocks umgeht
  • MySQL-Lernen (VII): Detaillierte Erläuterung des Implementierungsprinzips des Innodb Storage Engine-Index
  • MySQL slow_log-Tabelle kann nicht in InnoDB-Engine geändert werden – detaillierte Erklärung
  • Zusammenfassung wichtiger Komponenten von MySQL InnoDB

<<:  Vue: Zwei Komponenten auf gleicher Ebene erreichen eine Wertübertragung

>>:  So verwenden Sie Port 80 in Tomcat unter Linux

Artikel empfehlen

Einführung in die Verwendung sowie Vor- und Nachteile von MySQL-Triggern

Inhaltsverzeichnis Vorwort 1. Trigger-Übersicht 2...

Die Magie des tr-Befehls beim Zählen der Häufigkeit englischer Wörter

Wir alle kennen den Befehl tr, mit dem Ersetzunge...

Konkretes Beispiel einer MySQL-Mehrtabellenabfrage

1. Verwenden Sie die SELECT-Klausel, um mehrere T...

So entwickeln Sie eine Progressive Web App (PWA)

Inhaltsverzeichnis Überblick Erfordern URL der An...

Natives js zum Erreichen eines einfachen Karusselleffekts

In diesem Artikel wird der spezifische Code von j...

Beispielcode zur Implementierung einer QR-Code-Scanbox mit CSS

Normalerweise haben wir ein Scan-Feld, wenn wir d...

Detaillierte Schritte zur schnellen Installation von Openshift

Der schnellste Weg, die neueste Version von OpenS...

So erstellen Sie einen Flammeneffekt mit CSS

Unten beginnt der Haupttext. 123WORDPRESS.COM Her...

Detaillierte grafische Erklärung zur Verwendung von SVG im Vue3+Vite-Projekt

Heute habe ich bei der Verwendung von SVG in der ...