Upgrade der Docker-Version von MySQL 5.7 auf MySQL 8.0.13, Datenmigration

Upgrade der Docker-Version von MySQL 5.7 auf MySQL 8.0.13, Datenmigration

1. Sichern Sie die alten MySQL5.7-Daten

Denken Sie daran, zuerst alte Daten zu sichern, um Datenverlust aufgrund eines Upgradefehlers zu verhindern. Zum Sichern gibt es zwei Möglichkeiten. Eine besteht darin, den Exportbefehl direkt auf dem Hostcomputer auszuführen, und die andere besteht darin, zuerst die Docker-Umgebung aufzurufen, um den Vorgang auszuführen. Die wichtigsten Exportbefehle sind wie folgt:

#Methode 1: Daten direkt auf dem Hostcomputer sichern# 0df568 ist die Docker-ID; -uroot -p123456 ist der Benutzername und das Passwort; dbA dbB sind die zu sichernden Daten, --databases können von mehreren Datenbanknamen gefolgt werden und das exportierte SQL geht nach /root/all-databases3306.sql
docker exec -it 0df568 mysqldump -uroot -p123456 --databases dbA dbB > /root/all-databases3306.sql
#==============================================================================================================================================
#Methode 2: Geben Sie zuerst Docker ein und führen Sie mysqldump aus. Kopieren Sie dann das exportierte SQL auf den Host. #Geben Sie zuerst Docker ein
docker exec -it 0df568 /bin/bash
#Optionale Quelle /etc/profile
#Führen Sie den Exportbefehl mysqldump -uroot -p123456 --databases dbA dbB > /root/all-databases3306.sql aus.
#Auf den Hostcomputer kopieren#Docker beenden und den Exit-Befehl exit ausführen
#An diesem Punkt befinden Sie sich bereits in der Hostumgebung. Führen Sie den Kopierbefehl aus, um die SQL-Datei von Docker Red zu kopieren. docker cp 0df568:/root/all-databases3306.sql /root/all-databases3306.sql

2. Ziehen Sie das Image von MySQL8.0.13 und schließen Sie die Installation ab

Sie können MySQL von der offiziellen Website abrufen und installieren. Referenz-URL: https://hub.docker.com/r/mysql/mysql-server/. Hier ist eine kurze Beschreibung des Installationsvorgangs.

2.1 Ziehen Sie das Bild auf den lokalen

Führen Sie den folgenden Befehl aus, um das neueste MySQL-Image abzurufen

 Docker Pull MySQL/MySQL-Server: Letzte

Rufen Sie das angegebene MySQL-Image ab

#tag dient zum Eingeben der gewünschten Versionsnummer. Wenn Sie beispielsweise MySQL8.0.13 möchten, lautet das Tag docker pull mysql/mysql-server:8.0.13
docker pull mysql/mysql-server:tag

Sie können Docker-Images verwenden, um den heruntergeladenen Fortschritt anzuzeigen.

2.2 MySQL 8.0.13-Image ausführen

Führen Sie das angegebene MySQL8.0.13-Docker-Image aus. Wir haben das angegebene Image bereits in Schritt 2.1 abgerufen. Anschließend können wir das lokale Docker-Image über Docker-Images anzeigen und die Image-ID und den Namen abrufen. Führen Sie als Nächstes den folgenden Befehl aus, um das Docker-Image von MySQL 8.0.13 auszuführen:

#--name gibt den Namen nach dem Ausführen und Starten an -e gibt die Umgebungsvariablen in Docker an -v Partitions- oder Verzeichniszuordnung, Docker-Programmdaten werden dem angegebenen Speicherort des Hosts zugeordnet -p gibt die Portzuordnung vom Host zum Docker-Programm an -d gibt die Version des Images an.
docker run --name=mysql8.0 -e MYSQL_ROOT_PASSWORD=123456 -v /root/dockerdata/mysql8.0/data:/var/lib/mysql -p 3307:3306 -dit mysql/mysql-server:8.0.13

Überprüfen Sie, ob es läuft

# Führen Sie den folgenden Befehl aus: docker ps

3. Einige Probleme nach dem Upgrade auf MySQL 8.X

Nach dem Upgrade von MySQL 8.x können keine Remoteverbindungen hergestellt werden, was sehr unpraktisch ist und geändert werden muss. Es umfasst hauptsächlich die folgenden zwei Aspekte der Konfiguration:

3.1 Fernzugriff ermöglichen

Ändern Sie den Benutzer in @'%', % bedeutet, dass alle Hosts eine Verbindung herstellen können, der Befehl lautet wie folgt:

#Melden Sie sich zunächst als Root bei der Datenbank an und führen Sie die folgenden Befehle aus #a. Verwenden Sie msyql
benutze MySQL;
#b. Führen Sie dann die Autorisierung aus. GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456'
#c. Denken Sie daran, die Berechtigungen zu aktualisieren (neu laden), andernfalls müssen Sie MySQL neu starten, damit FLUSH PRIVILEGES wirksam wird.

3.2 Ändern Sie die Methode zur Kennwortüberprüfung für die Verbindung

Die Verschlüsselungsmethode von MySQL8.X ist caching_sha2_password. Die Verschlüsselungsmethode caching_sha2_password wird beim Remotezugriff nicht unterstützt und muss daher in mysql_native_password geändert werden.

# a. Ändern Sie den angegebenen Benutzer ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# b. Denken Sie daran, die Berechtigungen zu aktualisieren (neu laden), andernfalls müssen Sie MySQL neu starten, damit FLUSH PRIVILEGES wirksam wird.

4. Daten in das neue MySQL importieren

Um Daten zu importieren, kopiere ich zuerst die Datenbanksicherungsdatei in den neuen Docker und führe dann den Importbefehl aus. Der Befehl lautet wie folgt:

#Kopieren Sie die Sicherungsdatei nach Docker cp /root/all-databases3306.sql 3sfsdf:/root/all-databases3306.sql 
#Geben Sie zuerst die Docker-Umgebung ein und importieren Sie sie dann in die Datenbank docker exec -it xxx /bin/bash
mysql -u root -p < /root/all-databases3306.sql

5. Referenzdokumente

https://hub.docker.com/r/mysql/mysql-server/
https://bugs.mysql.com/bug.php?id=92675

Zusammenfassen

Das Obige ist die Einführung des Herausgebers zum Upgrade der Docker-Version von MySQL5.7 auf MySQL8.0.13 und zur Datenmigration. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Methoden und Schritte zum Upgrade von MySql5.x auf MySql8.x
  • MySQL 8.0 Upgrade-Erfahrung

<<:  Zusammenfassung zum Ändern des Root-Passworts in MySQL 5.7 und MySQL 8.0

>>:  Beispielschritte zur Verwendung von AntV X6 mit Vue.js

Artikel empfehlen

Kopieren von Feldern zwischen verschiedenen Tabellen in MySQL

Manchmal müssen wir eine ganze Datenspalte aus ei...

Detaillierte Erklärung der MySQL-Grundoperationen (Teil 2)

Vorwort Dieser Artikel enthält 1. Mehrere wesentl...

Versionsnummern in CSS- und JS-Links in HTML (Cache aktualisieren)

Hintergrund Suchen Sie in der Suchmaschine nach d...

Javascript um den Drag-Effekt der Login-Box zu erreichen

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

Der URL-Wert des SRC- oder CSS-Hintergrundbildes ist der Base64-codierte Code

Möglicherweise ist Ihnen aufgefallen, dass auf die...

Implementierung neuer Probleme mit CSS3-Selektoren

Inhaltsverzeichnis Grundlegende Selektorerweiteru...

JavaScript implementiert kreisförmigen Fortschrittsbalkeneffekt

In diesem Artikelbeispiel wird der spezifische Ja...

Eclipse konfiguriert Tomcat und Tomcat hat eine ungültige Port-Lösung

Inhaltsverzeichnis 1. Eclipse konfiguriert Tomcat...