Beinhaltet mysqldump -all-databases
alle Objekte?
Ich muss alle Datenbanken auf einen neuen Server migrieren.
Nein mysqldump -all-databases enthält nicht alle Objekte
mysqldump --help
-A, --all-databases Dump all the databases. This will be same as --databases
with all databases selected.
Mysqldump with --all-databases gibt also nur alle Datenbanken aus.
Um alle Datenbanken auf einen neuen Server zu migrieren, sollten Sie eine vollständige Sicherung durchführen:
mysqldump eine ganze mysql-Instanz
mysqldump -h... -u... -p... --events --routines --triggers --all-databases > MySQLData.sql
Der Nachteil ist, dass auf diese Weise erstellte Sicherungen nur in dieselbe Hauptversionsversion von mysql zurückgeladen werden können, mit der der mysqldump generiert wurde. Mit anderen Worten, eine mysqldump --all-database aus einer MySQL 5.0-Datenbank kann nicht in 5.1 oder 5.5 geladen werden. Der Grund ? Das MySQL-Schema unterscheidet sich grundlegend zwischen den Hauptversionen.
Hier ist die allgemeine Möglichkeit, die SQL-Berechtigungen für Benutzer zu sichern, die lesbar und portabler sind
mysql -h... -u... -p... --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -h... -u... -p... --skip-column-names -A | sed 's/$/;/g' > MySQLGrants.sql
Schauen Sie sich die Antwort von RolandoMySQLDBA auf Wie kann ich einen mysqldump einer großen Datenbank optimieren?
--events
was zusätzlich zu--routines
und benötigt wird, und--triggers
Sie haben auch darauf verzichtet--single-transaction
, Tabellen unnötig zu sperren.--single-transaction
wird keine konsistente Sicherung erstellt, wenn MyISAM-Tabellen geschrieben werden, während die Sicherung ausgeführt wird. Das Hinzufügen--single-transaction
ist jedoch eine gute Idee, wenn Sie nur InnoDB verwenden und Blockierungen währendmysqldump
der Ausführung vermeiden möchten .