Heim > Betrieb und Instandhaltung > Docker > 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
Freigeben: 2023-03-31 18:20:53
Original
6728 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren

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

2. Überprüfen Sie das Containerprotokoll

docker logs mysql
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren
Folgender Befehl zum Anzeigen und Ändern von Verzeichnisberechtigungen:

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

docker exec -it mysql bash
chmod -R 777 /var/lib/mysql
exit
Nach dem Login kopieren
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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage