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

Three.js realisiert den dynamischen 3D-Logoeffekt von Facebook Metaverse

Inhaltsverzeichnis Hintergrund Was ist das Metave...

Docker-Compose-Tutorial: Installation und Schnellstart

Inhaltsverzeichnis 1. Einführung in Compose 2. Co...

10 HTML-Tabellen-bezogene Tags

Tatsächlich werden viele Leute sagen: „Ich habe ge...

Reacts Übergang von Klassen zu Hooks

Inhaltsverzeichnis ReagierenHooks Vorwort WarumHo...

Beispiel für eine automatische Importmethode für allgemeine Vue3.0-Komponenten

1. Voraussetzungen Wir verwenden zum Importieren ...

JavaScript, um das Bild mit der Maus zu bewegen

In diesem Artikel wird der spezifische JavaScript...

Eine detaillierte Einführung in die Betriebssystemebenen von Linux

Inhaltsverzeichnis 1. Einführung in die Linux-Sys...

Sieben Prinzipien eines guten Designers (1): Schriftdesign

Nun, vielleicht sind Sie ein Design-Guru, oder vie...

Detaillierte Einführung in den Nobody-Benutzer und Nologin im Unix/Linux-System

Was ist der Nobody-Benutzer in Unix/Linux-Systeme...

Eine kurze Analyse der Crontab-Aufgabenplanung in Linux

1. Erstellen Sie eine Planungsaufgabe Anweisung c...

JavaScript implementiert eine Warteschlange mit doppeltem Ende

In diesem Artikelbeispiel wird der spezifische Co...