web-dev-qa-db-fra.com

Mysqldump -all-databases inclut-il tous les objets

Est-ce que mysqldump -all-databases inclure tous les objets?

Je dois migrer toutes les bases de données vers un nouveau serveur.

16
Manish Ishwar

Aucun mysqldump -all-databases n'inclut tous les objets

mysqldump --help

  -A, --all-databases Dump all the databases. This will be same as --databases
                      with all databases selected.

Donc mysqldump avec --all-databases ne vide que toutes les bases de données.

Afin de migrer toutes les bases de données vers un nouveau serveur, vous devez effectuer une sauvegarde complète:

mysqldump une instance entière de mysql

mysqldump -h... -u... -p... --events --routines --triggers --all-databases > MySQLData.sql

L'inconvénient est que les sauvegardes créées de cette manière ne peuvent être rechargées que dans la même version majeure de mysql avec laquelle le mysqldump a été généré. En d'autres termes, une base de données mysqldump --all à partir d'une base de données MySQL 5.0 ne peut pas être chargée en 5.1 ou 5.5. La raison ? Le schéma mysql est totalement différent entre les principales versions.

Voici le moyen générique de vider les subventions SQL pour les utilisateurs qui est lisible et plus portable

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

Jetez un œil à la réponse de RolandoMySQLDBA sur Comment puis-je optimiser le mysqldump d'une grande base de données?

21
Abdul Manaf