Mysqldump -all-databases inclut-il tous les objets

16

Inclut mysqldump -all-databasestous les objets?

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

Manish Ishwar
la source

Réponses:

21

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 mysql entière

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

L'inconvénient est que les sauvegardes créées de cette façon 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 la manière 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 un mysqldump d'une grande base de données?

Abdul Manaf
la source
1
Vous avez oublié ce --events qui est nécessaire en plus --routineset --triggersvous aussi omis --single-transactionpour éviter le verrouillage des tables inutilement.
Michael - sqlbot
1
Juste pour être sûr que c'est clair, --single-transactionne produira pas une sauvegarde cohérente s'il y a des tables MyISAM écrites pendant l'exécution de la sauvegarde. Cependant, l'ajout --single-transactionest une bonne idée si vous utilisez tous InnoDB et que vous souhaitez éviter le blocage lors des mysqldumpexécutions.
James L