
Einführung
Die Migration einer MySQL-Datenbank ist ein kritischer Vorgang, der sich auf die Datenintegrität, die Anwendungsstabilität und die Rollback-Funktionen auswirkt. Wir werden erläutern, wie Sie mysqldump verwenden, Benutzer migrieren, die Datenintegrität bewahren und die Feinheiten verschiedener MySQL-Versionen berücksichtigen.
Wann ist eine Migration erforderlich?
- Umzug zu einem neuen Hosting-Anbieter oder Server.
- Aktualisierung der MySQL-Version.
- Konfiguration der Replikation oder Lastverteilung.
- Konsolidierung von Datenbanken.
Risiken und wie man sie minimiert
- Versionsinkompatibilität: Unterschiede in sql_mode, default_authentication_plugin, Kodierungen (utf8mb4_unicode_ci vs. utf8mb4_0900_ai_ci).
- Verlust von Berechtigungen: Benutzer werden separat gespeichert und müssen manuell übertragen werden.
- Ausfallzeiten der Anwendung bei der Migration ohne Replikation.
- Inkonsistenter Dump: –single-transaction funktioniert nur mit InnoDB; für MyISAM ist FLUSH TABLES WITH READ LOCK erforderlich.
Schritt-für-Schritt-Plan für die Migration
Schritt 1. Erstellen Sie einen Dump
Hauptschlüsselwort (1): MySQL-Datenbankmigration.
Erstellen Sie einen Dump mit Beibehaltung der Logik:
mysqldump -u root -p --single-transaction --routines --triggers --events olddb > dump.sql
- –single-transaction reduziert Sperren (funktioniert nur für InnoDB).
- –routines, –triggers, –events bewahrt Prozeduren, Trigger und Ereignisplaner.
Schritt 2. Übertragen Sie den Dump
Übertragen Sie ihn über SCP oder rsync über einen sicheren Kanal. Überprüfen Sie die Dateiintegrität:
sha256sum dump.sql
Schritt 3. Erstellen der Datenbank
Auf dem neuen Server:
mysql -u root -p -e "CREATE DATABASE newdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
Hinweis: utf8mb4_unicode_ci kann sich in MySQL 8.0 von utf8mb4_0900_ai_ci unterscheiden.
Schritt 4. Importieren Sie den Dump.
mysql -u root -p newdb < dump.sql
Schritt 5. Benutzer und Berechtigungen übertragen
- Führen Sie SHOW GRANTS FOR ‚user‘@’host‘ aus und übertragen Sie CREATE USER/GRANT.
- In MySQL 8.0 können Sie mysqlpump –users verwenden.
- Berücksichtigen Sie default_authentication_plugin (in 8.0 ist dies caching_sha2_password).
Schritt 6. Integritätsprüfung
- Vergleichen Sie die Anzahl der Zeilen in den Tabellen.
- Überprüfen Sie die Prüfsummen (pt-table-checksum).
- Testen Sie wichtige SQL-Abfragen.
Schritt 7. Ausfallzeiten minimieren
Verwenden Sie für kritische Systeme die Replikation:
- Konfigurieren Sie den neuen Server als Slave.
- Warten Sie auf die Synchronisierung.
- Wechseln Sie ohne Ausfallzeiten von Master zu Slave.
Checkliste vor dem Wechsel
Einheit | Was ist zu überprüfen? |
Versionen | MySQL/MariaDB-Kompatibilität |
Kodierung | Stellen Sie sicher, dass utf8mb4 und Sortierungen korrekt sind. |
SQL-Modus | sql_mode vergleichen |
Rechte | GRANT überprüfen |
Plugins | default_authentication_plugin |
Replikation | Verzögerung überprüfen |
Rollback
- Erstellen Sie eine Sicherungskopie des alten Servers.
- Um einen Rollback durchzuführen, können Sie den alten Server als Slave starten und zurückwechseln.
Fazit
Die Migration einer MySQL-Datenbank ist sicher, wenn Sie die Versionen berücksichtigen, Dumps verwenden und die Integrität überprüfen. Durch Replikation lassen sich Ausfallzeiten vermeiden, und mit Backups können Sie schnell einen Rollback durchführen. Die Migration einer MySQL-Datenbank erfordert eine sorgfältige Vorgehensweise in Bezug auf Berechtigungen, Sortierungen und Einstellungen.