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 Schritte zum Ändern gespeicherter MySQL-Prozeduren

Vorwort Bei der tatsächlichen Entwicklung werden ...

Spezifische Verwendung des Ausnahmefilters Exceptionfilter in nestjs

Wenn wir über den Ausnahmefilter von Nestjs sprec...

So stellen Sie eine Nextcloud-Netzwerkfestplatte mit Docker bereit

NextCloud Sie können beliebige Dateien oder Ordne...

Detaillierte Erklärung des Prinzips und der Verwendung von MySQL-Ansichten

Dieser Artikel veranschaulicht anhand von Beispie...

Vue-Entwicklungsbaumstrukturkomponenten (Komponentenrekursion)

In diesem Artikelbeispiel wird der spezifische Co...

11 Linux-KDE-Anwendungen, die Sie nicht kannten

KDE Abkürzung für Kool Desktop Environment. Eine ...

JavaScript implementiert eine Warteschlange mit doppeltem Ende

In diesem Artikelbeispiel wird der spezifische Co...

Docker+Selenium-Methode zur Realisierung automatischer Gesundheitsberichte

In diesem Artikel wird das Gesundheitsmeldesystem...

So erweitern Sie den Linux-Swap-Speicher

Swap-Speicher bedeutet hauptsächlich, dass das Sy...