Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Umstieg von MySQL 5.7 auf MySQL 8.0 – Was Sie wissen sollten

April 2018 ist nicht nur ein Datum für die MySQL-Welt. MySQL 8.0 wurde dort veröffentlicht, und mehr als ein Jahr später ist es wahrscheinlich an der Zeit, eine Migration auf diese neue Version in Erwägung zu ziehen.

MySQL 8.0 verfügt über wichtige Leistungs- und Sicherheitsverbesserungen, und wie bei jeder Migration zu einer neuen Datenbankversion gibt es mehrere Dinge zu beachten, bevor Sie in die Produktion gehen, um schwerwiegende Probleme wie übermäßigen Datenverlust zu vermeiden Ausfallzeit oder sogar ein Rollback während der Migrationsaufgabe.

In diesem Blog erwähnen wir einige der neuen MySQL 8.0-Funktionen, einige veraltete Dinge und was Sie vor der Migration beachten müssen.

Was ist neu in MySQL 8.0?

Lassen Sie uns nun einige der wichtigsten Features zusammenfassen, die in der offiziellen Dokumentation für diese neue MySQL-Version erwähnt werden.

  • MySQL enthält ein Wörterbuch für Transaktionsdaten, das Informationen über Datenbankobjekte speichert.
  • Eine atomare DDL-Anweisung kombiniert die Datenwörterbuchaktualisierungen, Speicher-Engine-Operationen und Schreibvorgänge im Binärlog, die mit einer DDL-Operation verbunden sind, in einer einzigen, atomaren Transaktion.
  • Der MySQL-Server führt beim nächsten Start automatisch alle erforderlichen Upgrade-Aufgaben durch, um die Systemtabellen im mysql-Schema sowie Objekte in anderen Schemas wie dem sys-Schema und den Benutzerschemas zu aktualisieren. Der DBA muss mysql_upgrade nicht aufrufen.
  • Es unterstützt die Erstellung und Verwaltung von Ressourcengruppen und ermöglicht die Zuweisung von Threads, die innerhalb des Servers ausgeführt werden, zu bestimmten Gruppen, sodass Threads gemäß den für die Gruppe verfügbaren Ressourcen ausgeführt werden.
  • Die Tabellenverschlüsselung kann jetzt global verwaltet werden, indem Standardeinstellungen für die Verschlüsselung definiert und erzwungen werden. Die Variable default_table_encryption definiert einen Verschlüsselungsstandard für neu erstellte Schemas und allgemeinen Tablespace. Verschlüsselungsstandardwerte werden erzwungen, indem die Variable table_encryption_privilege_check aktiviert wird.
  • Der Standardzeichensatz wurde von latin1 zu utf8mb4 geändert.
  • Es unterstützt die Verwendung von Ausdrücken als Standardwerte in Datentypspezifikationen. Dies umfasst die Verwendung von Ausdrücken als Standardwerte für die Datentypen BLOB, TEXT, GEOMETRY und JSON.
  • Fehlerprotokollierung wurde umgeschrieben, um die MySQL-Komponentenarchitektur zu verwenden. Die herkömmliche Fehlerprotokollierung wird mithilfe integrierter Komponenten implementiert, und die Protokollierung mithilfe des Systemprotokolls wird als ladbare Komponente implementiert.
  • Eine neue Art von Sicherungssperre lässt DML während einer Online-Sicherung zu und verhindert gleichzeitig Vorgänge, die zu einem inkonsistenten Snapshot führen könnten. Die neue Sicherungssperre wird von der Syntax LOCK INSTANCE FOR BACKUP und UNLOCK INSTANCE unterstützt. Die Berechtigung BACKUP_ADMIN ist erforderlich, um diese Anweisungen zu verwenden.
  • MySQL Server erlaubt jetzt die Konfiguration eines TCP/IP-Ports speziell für administrative Verbindungen. Dies bietet eine Alternative zu der einzelnen administrativen Verbindung, die auf den Netzwerkschnittstellen erlaubt ist, die für gewöhnliche Verbindungen verwendet werden, selbst wenn max_connections-Verbindungen bereits eingerichtet sind.
  • Es unterstützt unsichtbare Indizes. Dieser Index wird vom Optimierer nicht verwendet und ermöglicht es, die Auswirkung des Entfernens eines Index auf die Abfrageleistung zu testen, ohne ihn zu entfernen.
  • Document Store zum Entwickeln von SQL- und NoSQL-Dokumentanwendungen unter Verwendung einer einzigen Datenbank.
  • MySQL 8.0 macht es möglich, globale, dynamische Servervariablen mit dem SET PERSIST-Befehl statt des üblichen SET GLOBAL-Befehls zu persistieren.

MySQL-Sicherheit und Kontoverwaltung

Da es viele Verbesserungen in Bezug auf Sicherheit und Benutzerverwaltung gibt, werden wir sie in einem separaten Abschnitt auflisten.

  • Die Grant-Tabellen in der mysql-Systemdatenbank sind jetzt InnoDB-Tabellen.
  • Das neue caching_sha2_password-Authentifizierungs-Plugin ist jetzt die Standard-Authentifizierungsmethode in MySQL 8.0. Es implementiert SHA-256-Passwort-Hashing, verwendet jedoch Caching, um Latenzprobleme bei der Verbindungszeit zu beheben. Es bietet eine sicherere Passwortverschlüsselung als das Plugin mysql_native_password und eine bessere Leistung als sha256_password.
  • MySQL unterstützt jetzt Rollen, die benannte Sammlungen von Berechtigungen sind. Rollen können Privilegien gewährt und entzogen werden, und sie können Benutzerkonten gewährt und entzogen werden.
  • MySQL verwaltet jetzt Informationen über den Passwortverlauf und ermöglicht Einschränkungen bei der Wiederverwendung früherer Passwörter.
  • Es ermöglicht Administratoren, Benutzerkonten so zu konfigurieren, dass zu viele aufeinanderfolgende Anmeldefehler aufgrund falscher Passwörter zu einer vorübergehenden Kontosperrung führen.

InnoDB-Verbesserungen

Wie beim vorherigen Punkt gibt es auch viele Verbesserungen zu diesem Thema, daher werden wir sie auch in einem separaten Abschnitt auflisten.

  • Der aktuelle maximale Zählerwert für die automatische Erhöhung wird jedes Mal in das Redo-Protokoll geschrieben, wenn sich der Wert ändert, und an jedem Prüfpunkt in einer Engine-privaten Systemtabelle gespeichert. Diese Änderungen sorgen dafür, dass der aktuelle maximale Zählerwert für die automatische Erhöhung über Serverneustarts hinweg bestehen bleibt
  • Wenn eine Beschädigung des Indexbaums auftritt, schreibt InnoDB ein Korruptions-Flag in das Redo-Protokoll, wodurch das Korruptions-Flag absturzsicher wird. InnoDB schreibt außerdem an jedem Checkpoint In-Memory-Korruptions-Flag-Daten in eine private Systemtabelle der Engine. Während der Wiederherstellung liest InnoDB Korruptions-Flags von beiden Speicherorten und führt die Ergebnisse zusammen, bevor In-Memory-Tabellen- und Indexobjekte als beschädigt markiert werden.
  • Eine neue dynamische Variable, innodb_deadlock_detect, kann verwendet werden, um die Deadlock-Erkennung zu deaktivieren. Auf Systemen mit hoher Parallelität kann die Deadlock-Erkennung zu einer Verlangsamung führen, wenn zahlreiche Threads auf dieselbe Sperre warten. Manchmal kann es effizienter sein, die Deadlock-Erkennung zu deaktivieren und sich auf die innodb_lock_wait_timeout-Einstellung für Transaktions-Rollback zu verlassen, wenn ein Deadlock auftritt.
  • Temporäre InnoDB-Tabellen werden jetzt im freigegebenen temporären Tablespace ibtmp1 erstellt.
  • Mysql-Systemtabellen und Data-Dictionary-Tabellen werden jetzt in einer einzigen InnoDB-Tablespace-Datei namens mysql.ibd im MySQL-Datenverzeichnis erstellt. Bisher wurden diese Tabellen in einzelnen InnoDB-Tablespace-Dateien im mysql-Datenbankverzeichnis erstellt.
  • Standardmäßig befinden sich Undo-Logs jetzt in zwei Undo-Tablespaces, die erstellt werden, wenn die MySQL-Instanz initialisiert wird. Undo-Logs werden nicht mehr im System-Tablespace erstellt.
  • Die neue Variable innodb_dedicated_server, die standardmäßig deaktiviert ist, kann verwendet werden, damit InnoDB automatisch die folgenden Optionen entsprechend der auf dem Server erkannten Speichermenge konfiguriert:innodb_buffer_pool_size, innodb_log_file_size und innodb_flush_method. Diese Option ist für MySQL-Serverinstanzen vorgesehen, die auf einem dedizierten Server ausgeführt werden.
  • Tablespace-Dateien können mithilfe der Option innodb_directories verschoben oder an einem neuen Speicherort wiederhergestellt werden, während der Server offline ist.

Sehen wir uns nun einige der Funktionen an, die Sie in dieser neuen MySQL-Version nicht mehr verwenden sollten.

Was ist in MySQL 8.0 veraltet?

Die folgenden Funktionen sind veraltet und werden in einer zukünftigen Version entfernt.

  • Der Zeichensatz utf8mb3 ist veraltet. Bitte verwenden Sie stattdessen utf8mb4.
  • Da caching_sha2_password das Standard-Authentifizierungs-Plugin in MySQL 8.0 ist und eine Obermenge der Fähigkeiten des sha256_password-Authentifizierungs-Plugins bietet, ist sha256_password veraltet.
  • Das validate_password-Plugin wurde neu implementiert, um die Infrastruktur der Serverkomponenten zu verwenden. Die Plugin-Form von validate_password ist immer noch verfügbar, aber veraltet.
  • Die ENGINE-Klausel für die Anweisungen ALTER TABLESPACE und DROP TABLESPACE.
  • Der PAD_CHAR_TO_FULL_LENGTH SQL-Modus.
  • Die
  • AUTO_INCREMENT-Unterstützung ist für Spalten vom Typ FLOAT und DOUBLE (und alle Synonyme) veraltet. Erwägen Sie, das Attribut AUTO_INCREMENT aus solchen Spalten zu entfernen, oder konvertieren Sie sie in einen Integer-Typ.
  • Das Attribut UNSIGNED ist für Spalten vom Typ FLOAT, DOUBLE und DECIMAL (und alle Synonyme) veraltet. Erwägen Sie stattdessen die Verwendung einer einfachen CHECK-Einschränkung für solche Spalten.
  • Die
  • FLOAT(M,D)- und DOUBLE(M,D)-Syntax zur Angabe der Anzahl der Stellen für Spalten vom Typ FLOAT und DOUBLE (und alle Synonyme) ist eine nicht standardmäßige MySQL-Erweiterung. Diese Syntax ist veraltet.
  • Der nicht standardmäßige C-Stil &&, || und ! Operatoren, die Synonyme für die Standard-SQL-Operatoren AND, OR bzw. NOT sind, sind veraltet. Anwendungen, die die Nicht-Standard-Operatoren verwenden, sollten angepasst werden, um die Standard-Operatoren zu verwenden.
  • Der mysql_upgrade-Client ist veraltet, da seine Fähigkeiten zum Aktualisieren der Systemtabellen im mysql-Systemschema und von Objekten in anderen Schemas auf den MySQL-Server verschoben wurden.
  • Die Datei mysql_upgrade_info, die als Datenverzeichnis erstellt und zum Speichern der MySQL-Versionsnummer verwendet wird.
  • Die Systemvariable relay_log_info_file und die Option --master-info-file sind veraltet. Zuvor wurden diese verwendet, um den Namen des Relay-Log-Info-Logs und des Master-Info-Logs anzugeben, wenn relay_log_info_repository=FILE und master_info_repository=FILE gesetzt waren, aber diese Einstellungen sind veraltet. Die Verwendung von Dateien für das Relay-Log-Infolog und das Master-Infolog wurde durch absturzsichere Slave-Tabellen ersetzt, die in MySQL 8.0 standardmäßig verwendet werden.
  • Die Verwendung der Umgebungsvariable MYSQL_PWD zur Angabe eines MySQL-Passworts ist veraltet.

Und jetzt werfen wir einen Blick auf einige der Funktionen, die Sie in dieser MySQL-Version nicht mehr verwenden dürfen.

Was wurde in MySQL 8.0 entfernt?

Die folgenden Funktionen wurden in MySQL 8.0 entfernt.

  • Die Systemvariable innodb_locks_unsafe_for_binlog wurde entfernt. Die Isolationsstufe READ COMMITTED bietet eine ähnliche Funktionalität.
  • Verwenden von GRANT zum Erstellen von Benutzern. Verwenden Sie stattdessen CREATE USER. Wenn Sie dieser Vorgehensweise folgen, wird der SQL-Modus NO_AUTO_CREATE_USER für GRANT-Anweisungen unwesentlich, also wird er ebenfalls entfernt, und es wird jetzt ein Fehler in das Serverprotokoll geschrieben, wenn das Vorhandensein dieses Werts für die Option sql_mode in der Optionsdatei den Start von mysqld verhindert.
  • Verwenden von GRANT, um andere Kontoeigenschaften als Berechtigungszuweisungen zu ändern. Dazu gehören Authentifizierungs-, SSL- und Ressourcenbegrenzungseigenschaften. Richten Sie solche Eigenschaften stattdessen zum Zeitpunkt der Kontoerstellung mit CREATE USER ein oder ändern Sie sie später mit ALTER USER.
  • IDENTIFIED BY PASSWORD 'auth_string' Syntax für CREATE USER und GRANT. Verwenden Sie stattdessen IDENTIFIED WITH auth_plugin AS 'auth_string' für CREATE USER und ALTER USER, wobei der Wert 'auth_string' in einem Format vorliegt, das mit dem benannten Plugin kompatibel ist.
  • Die Funktion PASSWORD(). Außerdem bedeutet das Entfernen von PASSWORD(), dass die Syntax SET PASSWORD ... =PASSWORD('auth_string') nicht mehr verfügbar ist.
  • Die Systemvariable old_passwords.
  • Die Anweisungen FLUSH QUERY CACHE und RESET QUERY CACHE.
  • Diese Systemvariablen:query_cache_limit, query_cache_min_res_unit, query_cache_size, query_cache_type, query_cache_wlock_invalidate.
  • Diese Statusvariablen:Qcache_free_blocks, Qcache_free_memory, Qcache_hits, Qcache_inserts, Qcache_lowmem_prunes, Qcache_not_cached, Qcache_queries_in_cache, Qcache_total_blocks.
  • Diese Thread-Zustände:Berechtigungen für zwischengespeicherte Abfrage prüfen, Abfrage-Cache auf eine Abfrage prüfen, Abfrage-Cache-Einträge ungültig machen, zwischengespeichertes Ergebnis an den Client senden, Ergebnis im Abfrage-Cache speichern, auf Abfrage-Cache-Sperre warten.
  • Die Systemvariablen tx_isolation und tx_read_only wurden entfernt. Verwenden Sie stattdessen transaction_isolation und transaction_read_only.
  • Die Systemvariable sync_frm wurde entfernt, da .frm-Dateien veraltet sind.
  • Die Systemvariable secure_auth und die Clientoption --secure-auth wurden entfernt. Die Option MYSQL_SECURE_AUTH für die C-API-Funktion mysql_options() wurde entfernt.
  • Die Systemvariable log_warnings und die Serveroption --log-warnings wurden entfernt. Verwenden Sie stattdessen die Systemvariable log_error_verbosity.
  • Der globale Geltungsbereich für die Systemvariable sql_log_bin wurde entfernt. sql_log_bin hat nur Sitzungsbereich, und Anwendungen, die auf den Zugriff auf @@GLOBAL.sql_log_bin angewiesen sind, sollten angepasst werden.
  • Die ungenutzten Systemvariablen date_format, datetime_format, time_format und max_tmp_tables werden entfernt.
  • Die veralteten Qualifizierer ASC oder DESC für GROUP BY-Klauseln wurden entfernt. Abfragen, die zuvor auf der GROUP BY-Sortierung beruhten, können zu Ergebnissen führen, die sich von früheren MySQL-Versionen unterscheiden. Um eine bestimmte Sortierreihenfolge zu erzeugen, stellen Sie eine ORDER BY-Klausel bereit.
  • Der Parser behandelt \N nicht mehr als Synonym für NULL in SQL-Anweisungen. Verwenden Sie stattdessen NULL. Diese Änderung wirkt sich nicht auf Import- oder Exportvorgänge von Textdateien aus, die mit LOAD DATA oder SELECT ... INTO OUTFILE ausgeführt werden, für die NULL weiterhin durch \N dargestellt wird.
  • Die clientseitigen Optionen --ssl und --ssl-verify-server-cert wurden entfernt. Verwenden Sie --ssl-mode=REQUIRED anstelle von --ssl=1 oder --enable-ssl. Verwenden Sie --ssl-mode=DISABLED anstelle von --ssl=0, --skip-ssl oder --disable-ssl. Verwenden Sie --ssl-mode=VERIFY_IDENTITY anstelle von --ssl-verify-server-cert-Optionen.
  • Das Programm mysql_install_db wurde aus MySQL-Distributionen entfernt. Die Initialisierung des Datenverzeichnisses sollte stattdessen durch Aufrufen von mysqld mit der Option --initialize oder --initialize-insecure durchgeführt werden. Außerdem wurde die Option --bootstrap für mysqld entfernt, die von mysql_install_db verwendet wurde, und die CMake-Option INSTALL_SCRIPTDIR, die den Installationsort für mysql_install_db steuerte, wurde entfernt.
  • Das Dienstprogramm mysql_plugin wurde entfernt. Zu den Alternativen gehört das Laden von Plugins beim Serverstart mit der Option --plugin-load oder --plugin-load-add oder zur Laufzeit mit der Anweisung INSTALL PLUGIN.
  • Das Dienstprogramm resolveip wurde entfernt. nslookup, host oder dig können stattdessen verwendet werden.

Es gibt viele neue, veraltete und entfernte Funktionen. Weitere Informationen finden Sie auf der offiziellen Website.

Überlegungen vor der Migration zu MySQL 8.0

Lassen Sie uns nun einige der wichtigsten Dinge erwähnen, die Sie beachten sollten, bevor Sie zu dieser MySQL-Version migrieren.

Authentifizierungsmethode

Wie bereits erwähnt, ist caching_sha2_password nicht die Standard-Authentifizierungsmethode, daher sollten Sie überprüfen, ob Ihre Anwendung/Ihr Connector dies unterstützt. Wenn nicht, sehen wir uns an, wie Sie die Standardauthentifizierungsmethode und das Benutzerauthentifizierungs-Plug-in wieder auf „mysql_native_password“ ändern können.

Um die standardmäßige Authentifizierungsmethode zu ändern, bearbeiten Sie die Konfigurationsdatei my.cnf und fügen/bearbeiten Sie die folgende Zeile hinzu:

$ vi /etc/my.cnf

[mysqld]

default_authentication_plugin=mysql_native_password

Um das Benutzerauthentifizierungs-Plugin zu ändern, führen Sie den folgenden Befehl mit einem privilegierten Benutzer aus:

$ mysql -p

ALTER USER ‘username’@’hostname’ IDENTIFIED WITH ‘mysql_native_password’ BY ‘password’;

Wie auch immer, diese Änderungen sind keine dauerhafte Lösung, da die alte Authentifizierung bald veraltet sein könnte, also sollten Sie sie für ein zukünftiges Datenbank-Upgrade berücksichtigen.

Auch die Rollen sind hier ein wichtiges Feature. Sie können die einzelnen Rechte reduzieren, indem Sie sie einer Rolle zuweisen und dort die entsprechenden Benutzer hinzufügen.

Zum Beispiel können Sie eine neue Rolle für das Marketing- und das Entwicklerteam erstellen:

$ mysql -p

CREATE ROLE 'marketing', 'developers';

Weisen Sie diesen neuen Rollen Privilegien zu:

GRANT SELECT ON *.* TO 'marketing';

GRANT ALL PRIVILEGES ON *.* TO 'developers';

Und weisen Sie dann den Benutzern die Rolle zu:

GRANT 'marketing' TO 'marketing1'@'%';

GRANT 'marketing' TO 'marketing2'@'%';

GRANT 'developers' TO 'developer1'@'%';

Und das war's. Sie haben die folgenden Privilegien:

SHOW GRANTS FOR 'marketing1'@'%';

+-------------------------------------------+

| Grants for [email protected]%                   |

+-------------------------------------------+

| GRANT USAGE ON *.* TO `marketing1`@`%`    |

| GRANT `marketing`@`%` TO `marketing1`@`%` |

+-------------------------------------------+

2 rows in set (0.00 sec)

SHOW GRANTS FOR 'marketing';

+----------------------------------------+

| Grants for [email protected]%                 |

+----------------------------------------+

| GRANT SELECT ON *.* TO `marketing`@`%` |

+----------------------------------------+

1 row in set (0.00 sec)

Zeichensätze

Da der neue Standardzeichensatz utf8mb4 ist, sollten Sie sicherstellen, dass Sie nicht den Standardzeichensatz verwenden, da er sich ändern wird.

Um einige Probleme zu vermeiden, sollten Sie die Variablen character_set_server und collation_server in der Konfigurationsdatei my.cnf angeben.

$ vi /etc/my.cnf

[mysqld]

character_set_server=latin1

collation_server=latin1_swedish_ci

MyISAM-Engine

Die MySQL-Berechtigungstabellen im MySQL-Schema werden nach InnoDB verschoben. Sie können eine Tabelle engine=MyISAM erstellen, die wie zuvor funktioniert, aber das Kopieren einer MyISAM-Tabelle in einen laufenden MySQL-Server funktioniert nicht, da sie nicht erkannt wird.

Partitionierung

Es darf keine partitionierten Tabellen geben, die eine Speicher-Engine verwenden, die keine native Partitionierungsunterstützung bietet. Sie können die folgende Abfrage ausführen, um diesen Punkt zu überprüfen.

$ mysql -p

SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE NOT IN ('innodb', 'ndbcluster') AND CREATE_OPTIONS LIKE '%partitioned%';

Wenn Sie die Engine einer Tabelle ändern müssen, können Sie Folgendes ausführen:

ALTER TABLE table_name ENGINE = INNODB;

Upgrade-Check

Als letzten Schritt können Sie den mysqlcheck-Befehl mit dem check-upgrade-Flag ausführen, um zu bestätigen, ob alles in Ordnung aussieht.

$ mysqlcheck -uroot -p --all-databases --check-upgrade

Enter password:

mysql.columns_priv                                 OK

mysql.component                                    OK

mysql.db                                           OK

mysql.default_roles                                OK

mysql.engine_cost                                  OK

mysql.func                                         OK

mysql.general_log                                  OK

mysql.global_grants                                OK

mysql.gtid_executed                                OK

mysql.help_category                                OK

mysql.help_keyword                                 OK

mysql.help_relation                                OK

mysql.help_topic                                   OK

mysql.innodb_index_stats                           OK

mysql.innodb_table_stats                           OK

mysql.password_history                             OK

mysql.plugin                                       OK

mysql.procs_priv                                   OK

mysql.proxies_priv                                 OK

mysql.role_edges                                   OK

mysql.server_cost                                  OK

mysql.servers                                      OK

mysql.slave_master_info                            OK

mysql.slave_relay_log_info                         OK

mysql.slave_worker_info                            OK

mysql.slow_log                                     OK

mysql.tables_priv                                  OK

mysql.time_zone                                    OK

mysql.time_zone_leap_second                        OK

mysql.time_zone_name                               OK

mysql.time_zone_transition                         OK

mysql.time_zone_transition_type                    OK

mysql.user                                         OK

sys.sys_config                                     OK

world_x.city                                       OK

world_x.country                                    OK

world_x.countryinfo                                OK

world_x.countrylanguage                            OK

Es gibt mehrere Dinge zu überprüfen, bevor Sie das Upgrade durchführen. Weitere Informationen finden Sie in der offiziellen MySQL-Dokumentation.

Upgrade-Methoden

Es gibt verschiedene Möglichkeiten, MySQL 5.7 auf 8.0 zu aktualisieren. Sie können das Upgrade vor Ort verwenden oder sogar einen Replikations-Slave in der neuen Version erstellen, damit Sie ihn später hochstufen können.

Aber vor dem Upgrade müssen Sie in Schritt 0 Ihre Daten sichern. Die Sicherung sollte alle Datenbanken einschließlich der Systemdatenbanken umfassen. Wenn es also ein Problem gibt, können Sie so schnell wie möglich ein Rollback durchführen.

Eine weitere Option, abhängig von den verfügbaren Ressourcen, kann das Erstellen einer Kaskadenreplikation MySQL 5.7 -> MySQL 8.0 -> MySQL 5.7 sein, so dass Sie nach dem Hochstufen der neuen Version, wenn etwas schief gelaufen ist, die hochstufen können Slave-Knoten mit der alten Version zurück. Aber es könnte gefährlich sein, wenn es ein Problem mit den Daten gibt, also ist die Sicherung vorher ein Muss.

Für jede zu verwendende Methode ist eine Testumgebung erforderlich, um zu überprüfen, ob die Anwendung mit der neuen MySQL 8.0-Version problemlos funktioniert.

Fazit

Mehr als 1 Jahr nach der Veröffentlichung von MySQL 8.0 ist es an der Zeit, darüber nachzudenken, Ihre alte MySQL-Version zu migrieren, aber glücklicherweise haben Sie Zeit, da das Ende der Unterstützung für MySQL 5.7 2023 ist, Zeit, einen Migrationsplan zu erstellen und das Anwendungsverhalten zu testen ohne Eile. Es ist notwendig, einige Zeit in diesen Testschritt zu investieren, um Probleme nach der Migration zu vermeiden.