Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Wie Docker das Problem löst, dass MySQL nicht gestartet werden kann

Wie Docker das Problem löst, dass MySQL nicht gestartet werden kann

PHPz
PHPzOriginal
2023-03-31 18:20:256552Durchsuche

Wenn Sie Docker zum Bereitstellen von MySQL verwenden, kann es zu Startfehlern kommen. In diesem Artikel wird ausführlich erläutert, wie Sie diese Situation lösen können.

1. Problembeschreibung

Mysql ist eine sehr beliebte relationale Datenbank und Docker ist eine Containertechnologie. Mithilfe von Docker können wir die MySQL-Datenbank problemlos bereitstellen, aber manchmal schlägt das Starten des MySQL-Containers fehl. Wir haben festgestellt, dass der Start fehlgeschlagen ist, als der folgende Docker-Befehl zum Starten des MySQL-Containers verwendet wurde:

docker run --name mysql -e MYSQL_ROOT_PASSWORD=mypassword -d mysql:5.7

2. Problemanalyse

Beim Starten des Containers gemäß dem obigen Befehl gibt der Parameter -e die Umgebungsvariable an, wobei MYSQL_ROOT_PASSWORD die ist Passwort des MySQL-Root-Benutzers. MySQL: 5.7 ist eine Spiegelversion der MySQL-Datenbank. Manchmal kommt es jedoch vor, dass der Container nicht gestartet werden kann. Zu diesem Zeitpunkt können wir die Fehlerursache analysieren, indem wir das Startcontainerprotokoll anzeigen.

docker logs mysql

hat festgestellt, dass der MySQL-Container beim Starten abgestürzt ist. Daher müssen wir die Fehlerursache finden.

3. Problemlösung

Wir können dieses Problem durch die folgenden Schritte lösen:

1. Überprüfen Sie, ob der Container läuft

docker ps

Wenn der Container bereits läuft, müssen wir nur das Containerprotokoll überprüfen.

2. Überprüfen Sie das Containerprotokoll

docker logs mysql

Die folgende Fehlermeldung finden Sie im Protokoll:

[ERROR] [MY-012144] [InnoDB] ./ibdata1 can't be opened in read-write mode
[ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error. 
[ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine: 0
[ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
[ERROR] [MY-010119] [Server] Aborting

Durch die Analyse des Fehlerprotokolls können wir erkennen, dass der Grund für den Mysql-Startfehler darin besteht, dass das Datenverzeichnis nicht beschreibbar ist. Um dies zu beheben, müssen wir herausfinden, wo sich das Datenverzeichnis befindet, und seine Berechtigungen auf „schreibbar“ setzen.

3. Sehen Sie sich das Datenverzeichnis des MySQL-Containers an.

docker inspect mysql | grep -i datadir
Folgender Befehl zum Anzeigen und Ändern von Verzeichnisberechtigungen:

"DataDir": "/var/lib/mysql"
Dann können wir den Container neu starten:

docker exec -it mysql bash
chmod -R 777 /var/lib/mysql
exit
Nach den oben genannten Schritten kann der MySQL-Container erfolgreich gestartet werden, wenn wir ihn erneut starten.

4. Zusammenfassung

Dieser Artikel bietet eine Lösung für das Versagen von Docker beim Starten von MySQL. Wenn der MySQL-Container nicht startet, können wir die Fehlerursache durch Überprüfen des Containerprotokolls ermitteln und rechtzeitig beheben.

Das obige ist der detaillierte Inhalt vonWie Docker das Problem löst, dass MySQL nicht gestartet werden kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn