Ich möchte ein Backup aller meiner MySQL-Datenbanken erstellen. Ich habe mehr als 100 MySQL-Datenbanken. Ich möchte sie alle gleichzeitig exportieren und alle gleichzeitig wieder in meinen MySQL-Server importieren. Wie kann ich das tun?
Antworten
Zu viele Anzeigen?Wenn Sie die gesamte Datenbank dumpen. Offensichtlich ist es mit großen Daten. So können Sie unten für besser bevorzugen:
Backup erstellen:
mysqldump -u [user] -p[password]--single-transaction --quick --all-databases | gzip > alldb.sql.gz
Wenn Fehler
-- Warnung: Die Daten der Tabelle mysql.event werden übersprungen. Geben Sie die Option --events explizit an.
使用する。
mysqldump -u [user] -p --events --single-transaction --quick --all-databases | gzip > alldb.sql.gz
Backup wiederherstellen:
gunzip < alldb.sql.gz | mysql -u [user] -p[password]
Ich hoffe, es hilft :)
Seien Sie vorsichtig, wenn Sie aus verschiedenen MySQL-Versionen exportieren und in diese importieren, da die MySQL-Tabellen unterschiedliche Spalten haben können. Wenn Sie Pech haben, funktioniert die Berechtigungsvergabe möglicherweise nicht. Ich habe dieses Skript (mysql_export_grants.sql ) erstellt, um die Berechtigungen für den Import in die neue Datenbank auszulagern, nur für den Fall:
#!/bin/sh
stty -echo
printf 'Password: ' >&2
read PASSWORD
stty echo
printf "\n"
if [ -z "$PASSWORD" ]; then
echo 'No password given!'
exit 1
fi
MYSQL_CONN="-uroot -p$PASSWORD"
mysql ${MYSQL_CONN} --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql ${MYSQL_CONN} --skip-column-names -A | sed 's/$/;/g'
Datenbank exportieren:
für den Export können Sie diesen Befehl verwenden:
mysqldump -u root -p --all-databases > alldb.sql
(you user name) (file name will be save)
und eigentlich habe ich diesen Beitrag geschrieben, weil es keinen Grund gibt, alle Datenbanken in einer Datei zu sichern. es könnte einen Fehler beim Importieren verursachen. Es gibt zum Beispiel einige Standarddatenbanken und es gibt keinen Grund, diese zu sichern.
Daher sollten Sie die Datenbanken auswählen, die Sie sichern möchten.
mysqldump -u root -p --databases YourDBName1 YourDBName2 YourDBName3 > tutorials_query1.sql
(your databases name that you want to backup)
können Sie mit diesem Befehl alle Datenbanknamen abrufen:
sudo mysql -u root -p
und geben Sie Ihr Passwort ein und dann vor mysql>
führen Sie diesen Befehl aus:
SHOW DATABASES;
Datenbank importieren:
mysql -u root -p < alldb.sql
(your username) (it can be the full path like "/home/yoursqlfile.sql")