Umfasst mysqldump -all-databases alle Objekte?

16

Beinhaltet mysqldump -all-databasesalle Objekte?

Ich muss alle Datenbanken auf einen neuen Server migrieren.

Manish Ishwar
quelle

Antworten:

21

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?

Abdul Manaf
quelle
1
Sie haben vergessen, --events was zusätzlich zu --routinesund benötigt wird, und --triggersSie haben auch darauf verzichtet --single-transaction, Tabellen unnötig zu sperren.
Michael - sqlbot
1
Nur um sicherzugehen, dass es klar ist, --single-transactionwird keine konsistente Sicherung erstellt, wenn MyISAM-Tabellen geschrieben werden, während die Sicherung ausgeführt wird. Das Hinzufügen --single-transactionist jedoch eine gute Idee, wenn Sie nur InnoDB verwenden und Blockierungen während mysqldumpder Ausführung vermeiden möchten .
James L