MySQL 8.0 Upgrade-Erfahrung

MySQL 8.0 Upgrade-Erfahrung

Vorwort

Ich war in letzter Zeit mit dem Fighting-Projekt beschäftigt und habe deshalb beim Schreiben etwas nachgelassen, was wirklich nicht richtig ist.

Ich musste zufällig ein Upgrade von MySQL5.7.33 auf MySQL8.0.x durchführen und habe daher den gesamten Upgrade-Prozess aufgezeichnet, um Fallstricke zu vermeiden.

Hintergrundzusammenfassung: Das im lokalen Docker-Container verwendete MySQL ist 5.7.33 (das Image-System verwendet Ubuntu 16.04), während das neue Projekt online MySQL 8.0 verwendet. Die aus dem Online-Export erstellte SQL-Datei (Tabellenstruktur + Daten) weist eine Zeichenkodierung auf, die von der niedrigeren MySQL-Version nicht verwendet wird. Beim Import tritt ein Fehler auf. Der aufgetretene Zeichensatzfehler lautet wie folgt:

 – Unbekannte Sortierung: „utf8mb4_0900_ai_ci“

Nachdem ich eine Weile gesucht hatte, beruhigte ich mich und kam auf zwei Ideen. Die eine nenne ich eine selbstzerstörerische Lösung, die andere eine radikale Lösung.

Wie der Name schon sagt, löst das Zuhalten der Ohren und Stehlen der Klingel nicht das wesentliche Problem, sondern behebt den Fehler durch stapelweises Ersetzen des Zeichensatzes, d. h. durch Ersetzen aller utf8mb4_0900_ai_ci in der Datei durch: utf8_general_ci.

Die zweite Methode besteht darin, die Konsistenz mit der Online-MySQL-Version zu wahren, sodass der Zeichensatz unterstützt werden kann.

Daher habe ich die zweite Methode verwendet, um MySQL in meinem Docker-Container zu aktualisieren und gleichzeitig ein neues Image zu verpacken.

Der Upgrade-Prozess ist zwar etwas holprig, die Logik ist jedoch klar.

1. Deinstallieren Sie zunächst die vorhandene MySQL-Version vollständig.

Sie können den folgenden Befehl verwenden:

#MySQL-Datendateien löschen sudo rm -R /var/lib/mysql/
#Löschen Sie die MySQL-Konfigurationsdatei sudo rm -R /etc/mysql/

#MySQL automatisch deinstallieren (einschließlich Server und Client)
sudo apt-get autoremove mysql* --purge
sudo apt-get entferne Apparmor

Denken Sie daran, die Konfigurationsdatei zu löschen, da sie möglicherweise inkompatibel ist.

2. Laden Sie deb herunter und installieren Sie MySQL 8.x.

Sie können es von der offiziellen Website unter https://dev.mysql.com/repo/apt herunterladen.

Wir wählen den aktuellsten Deb-Download, die URL lautet:
https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb. Verwenden Sie den Befehl wget zum Herunterladen nach dem Befehl wie folgt:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.20-1_all.deb


Nachdem der Download abgeschlossen ist, verwenden Sie den Befehl dpkg und aktualisieren Sie die apt-Quelle. Anschließend können Sie es installieren. Der vollständige Befehl lautet wie folgt:

dpkg -i mysql-apt-config_0.8.20-1_all.deb
apt-get-Aktualisierung
apt-get install -y mysql-server

Während der Ausführung des letzten Befehls werden Sie aufgefordert, das Root-Passwort und einige grundlegende Konfigurationseinstellungen einzugeben. Anschließend können Sie die Installation abschließen.

Da MySQL in Ubuntu installiert ist, lautet die Startmethode:

Dienst MySQL starten

Mit dem Befehl können Sie den Status des laufenden Prozesses anzeigen. Im Normalfall sieht die Ausgabe ungefähr wie folgt aus:

/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock

3. Benutzer erstellen und Berechtigungen konfigurieren.

Bei der tatsächlichen Verwendung von MySQL 8.0.x stellt sich heraus, dass sich die Benutzerautorisierung geringfügig von früheren Versionen unterscheidet und in drei Schritte unterteilt werden muss:

  1. Erstellen Sie einen Benutzer.
  2. Weisen Sie Berechtigungen zu.
  3. Berechtigungen aktualisieren.

Die spezifischen SQL-Anweisungen lauten wie folgt und die Reihenfolge ist strikt:

Erstellen Sie den Benutzer „freephp“@„%“, identifiziert durch „176serTTc8Cg“;

gewähre „freephp“@„%“ alle Berechtigungen für dev_database.* mit der Gewährungsoption;

Berechtigungen leeren;

Lassen Sie mich das obige SQL erklären. Der erste Satz erstellt einen Benutzer namens freephp mit dem Passwort 176serTTc8Cg. % bedeutet, dass jeder Host eine Verbindung herstellen kann.

Der zweite Satz bedeutet, dem Benutzer freephp alle Berechtigungen für dev_database zu erteilen.

Der dritte Satz besteht darin, die Berechtigungen sofort zu aktualisieren, damit die neu erstellten Berechtigungen wirksam werden können.

Das Abenteuer ist nun abgeschlossen. Die neuen Funktionen von MySQL 8.0 müssen noch erkundet werden. Wir werden das nächste Mal darüber sprechen.

Zusammenfassen

Dies ist das Ende dieses Artikels über Fallstricke beim Upgrade auf MySQL 8.0. Weitere Informationen zu Fallstricken beim Upgrade auf MySQL 8.0 finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Upgrade der Docker-Version von MySQL 5.7 auf MySQL 8.0.13, Datenmigration
  • Methoden und Schritte zum Upgrade von MySql5.x auf MySql8.x

<<:  Detaillierte Schritte zur Verwendung von Arthas in einem Docker-Container

>>:  So verbergen und entfernen Sie Bildlaufleisten in HTML

Artikel empfehlen

Detaillierte Zusammenfassung des JavaScript-Arrays

Inhaltsverzeichnis 1. Array-Induktion 1. Teilen S...

So positionieren Sie die Kopfzeile mithilfe des CSS-Sticky-Layouts oben

Anwendungsszenarien: Eine der neuen Anforderungen...

Beispiel zum Ändern des Zeilenabstands einer HTML-Tabelle

Bei der Verwendung von HTML-Tabellen müssen wir m...

4 praktische Tipps für die Webseitengestaltung

Verwandte Artikel: 9 praktische Tipps zum Erstelle...

Die CSS-Priorität der Webseite wird für Sie ausführlich erklärt

Bevor wir über die CSS-Priorität sprechen, müssen...

Implementierungscode zur Installation von vsftpd in Ubuntu 18.04

Installieren Sie vsftpd $ sudo apt-get installier...

Analyse der Unterschiede zwischen Iframe und FRAME

1. Verwendung des Iframe-Tags <br />Wenn es ...

Implementierung der Docker-Batch-Container-Orchestrierung

Einführung Der Dockerfile-Build-Ausführungsvorgan...

Beispiel für die Anpassung des Stils des Auswahlfelds für Formulardateien

Code kopieren Der Code lautet wie folgt: <!DOC...

Beispielcode zur Implementierung von Dreiecken und Pfeilen durch CSS-Rahmen

1. CSS-Boxmodell Die Box beinhaltet: Rand, Rahmen...

Diagramm zur Installation von VMware 14 unter Windows 10

Software-Download Link zum Herunterladen der Soft...

border-radius-Methode zum Hinzufügen abgerundeter Ränder zu Elementen

border-radius:10px; /* Alle Ecken sind mit einem ...

Detaillierte Erklärung zum Abrufen der IP-Adresse eines Docker-Containers

1. Nach dem Betreten des Containers Katze /etc/ho...

Reines CSS3 zur Erzielung einer Mouseover-Schaltflächenanimation, Teil 2

Haben Sie nach den letzten beiden Kapiteln ein ne...

Kapseln Sie die Navigationsleistenkomponente mit Vue

Vorwort: Die vollständige Kapselung eines Funktio...