Die Migration einer MySQL-Datenbank auf einen anderen Server kann eine Herausforderung sein, insbesondere wenn du auf minimale Ausfallzeit und hohe Leistung abzielst.
Eines der beliebtesten Werkzeuge für diese Aufgabe ist mysqldump, ein von MySQL bereitgestelltes Dienstprogramm zum Sichern und Wiederherstellen von Datenbanken. In diesem Artikel zeigen wir dir, wie du mysqldump verwendest, um deine Datenbank zu migrieren, und wie du ein Skript erstellst, um den Prozess zu automatisieren.

Voraussetzungen
- Quell- und Zielserver mit installiertem MySQL
- MySQL-Root-Zugangsdaten oder ein Konto mit ausreichenden Berechtigungen auf beiden Servern
- SSH-Zugang zu beiden Servern oder der DB-Server muss eingehende Verbindungen zulassen (sofern nicht auf demselben Rechner)
Contents
Datenbank mit mysqldump exportieren
Der erste Schritt im Migrationsprozess besteht darin, ein Backup der Quelldatenbank zu erstellen. Wir verwenden dafür mysqldump. Mysqldump erstellt ein SQL-Skript, das alle notwendigen Befehle enthält, um die Datenbankstruktur und die Daten auf dem Zielserver wiederherzustellen.
Logge dich am Quellserver ein und führe den folgenden Befehl aus, um ein komprimiertes Backup deiner Datenbank zu erstellen:
mysqldump -u [username] -p --single-transaction --extended-insert --quick --lock-tables=false [database_name] | gzip > [backup_file].sql.gzErsetze [username], [database_name] und [backup_file] durch deinen MySQL-Benutzernamen, den Namen der Datenbank, die du migrieren möchtest, bzw. den gewünschten Namen der Backup-Datei.
Dieser Befehl verwendet das Flag --single-transaction, um die Datenkonsistenz sicherzustellen, --quick zur Reduzierung des Speicherverbrauchs und –lock-tables=false, um Tabellen während des Exportvorgangs nicht zu sperren.
Der wichtigste Parameter ist –extended-insert. Damit wird der Import der exportierten SQL-Datei auf dem Zielserver 10- bis 15-mal schneller.
Backup-Datei auf den Zielserver übertragen
Nachdem das Backup erstellt wurde, kannst du es in den anderen Datenbankserver importieren.
- Kopiere die komprimierte gzip-Datei auf den Server und importiere sie
- Entpacke die Datei und lade sie per SSH mit MySQL in den DB-Server
Um sie auf den Zielserver zu übertragen, kannst du ein Tool wie SCP, SFTP oder rsync verwenden. Zum Beispiel mit SCP:
scp [backup_file].sql.gz [destination_user]@[destination_ip]:/path/to/destinationErsetze [backup_file], [destination_user], [destination_ip] und /path/to/destination durch die entsprechenden Werte.
Datenbank auf dem Zielserver importieren
Sobald die Backup-Datei übertragen ist, logge dich am Zielserver ein und führe den folgenden Befehl aus, um die Datenbank zu importieren:
gunzip < [backup_file].sql.gz | mysql -u [username] -p [database_name]Ersetze [username], [database_name] und [backup_file] durch deinen MySQL-Benutzernamen, den Namen der Datenbank, die du migrieren möchtest, bzw. den Namen der Backup-Datei.
Datenbankmigrations-Skript herunterladen
Um den MySQL-Datenbankmigrationsprozess zu automatisieren, kannst du dieses Bash-Skript verwenden, das wir hier auf wp-staging.com eingesetzt haben, um unsere Datenbank in eine bei DigitalOcean gehostete managed DB zu migrieren. (Es wird nicht mehr verwendet, da WP Staging nun die Datenbankmigration übernehmen kann):
#!/bin/sh
# migrate.sh
sourceUser=""
sourcePassword=""
sourceHostname=""
sourcePort=""
sourceDatabase=""
destinationUser=""
destinationPassword=""
destinationHostname=""
destinationPort=""
destinationDatabase=""
echo "Exporting $sourceDatabase database to ./wp-staging.com.sql"
start_export=`date +%s`
mysqldump -P $sourcePort -h $sourceHostname -u $sourceUser -p$sourcePassword --set-gtid-purged=OFF --extended-insert --single-transaction --skip-lock-tables --column-statistics=0 $sourceDatabase > ./wp-staging.com.sql
# Done creating a dump of wp-staging.com
end_export=`date +%s`
echo "Database exported in" $((end_export-start_export)) "seconds"
echo "Importing Database to... "
start_import=`date +%s`
mysql -u $destinationUser -p$destinationPassword -h $destinationHostname -P $destinationPort $destinationDatabase < ./wp-staging.com.sql
# Done importing the dump to managed db
end_import=`date +%s`
echo "Database imported in" $((end_import-start_import)) "seconds"
echo "Total runtime: " $((end_export-start_export+end_import-start_import)) "seconds"
Ersetze die Werte der Datenbank-Zugangsdaten am Anfang der Datei durch die passenden Informationen für deine Quell- und Zieldatenbanken.
Stelle vor dem Ausführen des Skripts sicher, dass Quell- und Zieldatenbanken erreichbar sind.
Gib dem Skript anschließend Ausführungsrechte:
chmod +x migrate.shFühre das Skript aus, um die Migration durchzuführen:
./migrate.shDieses Skript exportiert die Quelldatenbank mit mysqldump, importiert die Datenbank auf den Zielserver mit dem mysql-Befehl und räumt anschließend auf, indem es die Backup-Datei entfernt.
Verwandte Artikel
- Migriere deine WordPress-Site zu einem anderen Host
- Linux- & Docker-Befehlsreferenz & Fehlerbehebung
- So erstellst du eine Staging-Site und klonst WordPress
- So löschst du alle WooCommerce-Bestellungen und Kundendaten auf der Staging-Site | WooCommerce-Transaktionen löschen
- So migrierst du WordPress auf einen neuen Server