Best Practices für MySQL-Upgrades

Best Practices für MySQL-Upgrades

MySQL 5.7 fügt viele neue Funktionen hinzu, wie z. B.: Online-DDL, Multi-Source-Replikation, verbesserte Semi-Synchronisierung, Tablespace-Übertragung, Sys-Bibliothek, Gruppenreplikation usw. Vor Kurzem hatte ich endlich die Gelegenheit, MySQL auf 5.7 zu aktualisieren, und ich bin sehr gespannt.

Übersicht über MySQL-Upgrades

Das Wesentliche beim MySQL-Upgrade:

Aktualisieren des Datenwörterbuchs

Die Datenwörterbücher sind: mysql, information_schema, performance_schema, sys schema.

Es gibt zwei Möglichkeiten, MySQL zu aktualisieren:

direktes Upgrade:

Geeignet für kleinere Versions-Upgrades.

Das heißt, fahren Sie das aktuelle MySQL herunter, ersetzen Sie die aktuelle Binärdatei oder das aktuelle Paket, starten Sie MySQL im vorhandenen Datenverzeichnis neu und führen Sie mysql_upgrade aus.

Funktionen: Keine Änderungen an Datendateien, schnelle Aktualisierungsgeschwindigkeit; kann jedoch nicht betriebssystemübergreifend sein und nicht über Hauptversionen hinweg (5.5—>5.7).

logisches Upgrade:

Geeignet für MySQL-Upgrades auf verschiedenen Betriebssystemen und Upgrades zwischen Hauptversionen.

Das heißt: Verwenden Sie mysqldump oder mydumper zum Importieren und Exportieren von Daten, um ein Versionsupgrade durchzuführen.

Funktionen: Es kann betriebssystem- und hauptversionsübergreifend verwendet werden. Die Aktualisierungsgeschwindigkeit ist jedoch langsam und es können leicht Zeichenverfälschungen und andere Probleme auftreten.

Vorbereitung vor dem Upgrade:

Machen Sie vorab Backups.

Informieren Sie sich über Änderungen an neuen Versionen (welche nicht mehr kompatibel sind, welche Funktionen nicht mehr unterstützt werden)

In den allgemeinen Informationen der offiziellen Website -> Was ist neu in MySQL 5.7

Hinweise zum Upgrade:

Prüfen Sie, ob es in der neuen Version größere Änderungen gibt

Beachten Sie die Änderung im SQL-Modus

Beispielsweise hat sich der SQL-Modus in MySQL 5.7 geändert. Einige SQL-Anweisungen funktionieren nicht für den SQL-Modus, der nicht mehr unterstützt wird. In diesem Fall können Sie den SQL-Modus löschen und ihn nach Abschluss des Vorgangs erneut festlegen.

Bestätigen Sie nach dem erfolgreichen Upgrade, ob das Business-SQL reibungslos ausgeführt werden kann

Ist die Programmschicht normal?

Manchmal werden Teile der ursprünglichen Programmiersprache von der neuen Version der Datenbank nicht unterstützt. Beispielsweise habe ich einmal PHP4.0 in 5.1 verwendet, aber als ich auf 5.6 aktualisiert habe, wurden einige PHP-Funktionen nicht mehr unterstützt.

Verwenden Sie nach Abschluss des Upgrades zum Testen unbedingt dasselbe Programm wie bei der Online-Version, um festzustellen, ob Probleme vorliegen.

Änderungen an der Speicher-Engine

Beispiel: In der zukünftigen Version 5.8 wird die Myisam-Engine nicht mehr unterstützt.

Achten Sie auf das Problem des verstümmelten Zeichensatzes

Verwenden Sie als Nächstes die direkte Upgrade-Methode, um MySQL 5.6 auf MySQL 5.7 zu aktualisieren.

Direktes Upgrade

Umfeld:

5.6.15 —>5.7.20

Vorbereitung vor dem Upgrade:

Sichern + auf die Änderungen in der neuen Version achten Upgrade-Vorgang:

1. Laden Sie das Softwarepaket 5.7 herunter und entpacken Sie es

# tar -xzvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
# ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql5.7

2. Schließen Sie das aktuelle MySQL (5.6)

# mysql -u root -p -S /data/mysql3308/mysql3308.sock --execute="SET GLOBAL innodb_fast_shutdown=0"
# mysqladmin -u root -p -S /data/mysql3308/mysql3308.sock herunterfahren

3. Ersetzen von Binärdateien (5.7 ersetzt 5.6)

# cd /usr/local
# mv mysql mysql5.6
# mv mysql5.7 mysql

4. Starten Sie MySQL mit dem vorhandenen Datenverzeichnis

# mysqld_safe --user=mysql --socket=/data/mysql3308/mysql3308.sock -p --skip-grant-tables --datadir=/data/mysql3308/data

5. Überprüfen Sie, ob alle Tabellen mit der aktuellen Version kompatibel sind und aktualisieren Sie die Systembibliothek

# mysql_upgrade -uroot -p -S /data/mysql3308/mysql3308.sock
Hinweis: Die Funktion von mysql_upgrade besteht darin, zu überprüfen, ob alle Tabellen in allen Bibliotheken mit der aktuellen neuen Version kompatibel sind, und die Systembibliothek zu aktualisieren.

6. Starten Sie neu, um sicherzustellen, dass die an der Systemtabelle vorgenommenen Änderungen wirksam werden

# mysqld --defaults-file=/data/mysql3308/my3308.cnf &
# mysql -uroot -p -S /data/mysql3308/mysql3308.sock

An diesem Punkt ist das Upgrade abgeschlossen.

Frage: Was soll ich tun, wenn das Upgrade von MySQL fehlschlägt?

Beim Upgrade wird im Allgemeinen eine Slave-Bibliothek zum Upgrade erstellt. Wenn das Upgrade fehlschlägt, wirkt sich dies nicht auf die Master-Bibliothek aus. Wenn das Upgrade erfolgreich ist und auch der Test erfolgreich ist, werden andere Slave-Bibliotheken schrittweise auf die neue Version aktualisiert. Schließlich wird die Master-Bibliothek offline genommen, eine Slave-Bibliothek wird zur neuen Master-Bibliothek befördert und die alte Master-Bibliothek wird aktualisiert.

Das könnte Sie auch interessieren:
  • Ausführliches Tutorial zu Installations- und Upgradeproblemen bei MySQL 5.7.30
  • Upgrade der Docker-Version von MySQL 5.7 auf MySQL 8.0.13, Datenmigration
  • phpstudy2018-Tutorial zum Upgrade von MySQL 5.5 auf 5.7 (mit Bildern und Text)
  • Fallstricke und Lösungen für das Upgrade von MySQL 5.7.23 in CentOS 7
  • Einige Fallstricke, auf die Entwickler nach dem Upgrade auf MySQL 5.7 achten müssen
  • So aktualisieren Sie die MySQL-Version in phpStudy auf 5.7.17
  • So aktualisieren Sie MySQL 5.6 auf 5.7 unter Windows
  • Detailliertes Tutorial zum Upgrade der kostenlosen Installationsversion von MySQL 5.7.17 unter Windows (x86, 64 Bit)
  • Einige „Fallstricke“ beim Upgrade der MySQL-Datenbank

<<:  Lösen Sie das Installationsproblem von Linux Tensorflow2.0

>>:  Zusammenfassung einiger Tipps zum Umgehen der Node.js-Codeausführung

Artikel empfehlen

Zwei Möglichkeiten zur Verwendung von React in React HTML

Grundlegende Verwendung <!DOCTYPE html> <...

Installation und Verwendung der Ubuntu 18.04 Serverversion (Bild und Text)

1 Schritte zur Systeminstallation Betriebssystemv...

Detaillierte Erläuterung der Nginx Rewrite-Nutzungsszenarien und Codebeispiele

Nginx Rewrite-Nutzungsszenarien 1. Sprung der URL...

Eine ausführliche Einführung in React-Referenzen

1. Was ist Refs wird in Computern als Resilient F...

Analyse des Ereignisschleifenmechanismus von JavaScript

Inhaltsverzeichnis Vorwort: 1. Gründe für die Ere...

Welche Bilddateiformate gibt es und wie wählt man sie aus?

1. Welche drei Formate? Dies sind: gif, jpg und pn...

10 Tipps für das User Interface Design mobiler Apps

Tipp 1: Konzentriert bleiben Die besten mobilen A...

15 Best Practices für HTML-Anfänger

Hier sind 30 Best Practices für HTML-Anfänger. 1....

Teilen Sie 10 der neuesten Web-Frontend-Frameworks (Übersetzung)

In der Welt der Webentwicklung sind Frameworks wei...

MySQL-Primärschlüssel-Benennungsstrategie im Zusammenhang

Als ich kürzlich die Details der Datenlebenszyklu...

Docker-Installation Tomcat Dubbo-Admin-Instanz-Kenntnisse

1. Laden Sie das Tomcat-Image herunter Docker zie...

Eine Codezeile zeigt Ihnen, wie Sie Linux-Prozesse verbergen

Freunde fragen mich immer, wie man Linux-Prozesse...

Eine Zeile CSS-Code zur Integration von Avatar und Nationalflagge

Es ist Nationalfeiertag und jeder kann es kaum er...

Lassen Sie uns kurz über die Änderungen im Setup in vue3.0 sfc sprechen

Inhaltsverzeichnis Vorwort Standard-SFC-Schreibme...