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

MySQL-Indexoptimierung: Detaillierte Einführung in die Paging-Erkundung

Inhaltsverzeichnis MySQL-Indexoptimierung – Pagin...

Detaillierte Erläuterung des Installationsprozesses von Jenkins auf CentOS 7

Installieren Sie Jenkins über Yum 1. Installation...

100-1% des Inhalts der Website ist Navigation

Website, (100-1)% des Inhalts ist Navigation 1. J...

Detaillierte Erklärung der Linux-CPU-Last und CPU-Auslastung

CPU-Last und CPU-Auslastung Beides kann bis zu ei...

JS implementiert das Baidu-Suchfeld

In diesem Artikelbeispiel wird der spezifische JS...

Drei nützliche Codes, damit sich Besucher an Ihre Website erinnern

Drei nützliche Codes, die Besuchern dabei helfen,...

Detaillierte Erklärung der Vuex-Umgebung

Inhaltsverzeichnis Erstellen Sie eine Vuex-Umgebu...

Detailliertes Installationstutorial für MySQL 5.7.11 unter Win7

Betriebssystem: Win7 64-Bit Ultimate Edition Komp...

Detaillierte Erklärung zur Installation der PHP-Curl-Erweiterung unter Linux

Dieser Artikel beschreibt, wie man die PHP-Curl-E...

So verwenden Sie nginx, um eine angegebene Schnittstelle (URL) zu blockieren

1. Einleitung Manchmal müssen Sie eine Servicesch...

Methoden des adaptiven Webdesigns (gutes Zugriffserlebnis auf Mobiltelefonen)

1. Fügen Sie dem HTML-Header das Viewport-Tag hin...

Detaillierte Erklärung des Integer-Datentyps tinyint in MySQL

Inhaltsverzeichnis 1.1Tinyint-Typbeschreibung 1.2...

Vue+SSH-Framework zur Realisierung von Online-Chat

In diesem Artikel wird der spezifische Code des V...

HTML als Startseite festlegen und zu Favoriten hinzufügen_Powernode Java Academy

So implementieren Sie die Funktionen „Als Startse...