Inclut mysqldump -all-databases
tous les objets?
Je dois migrer toutes les bases de données vers un nouveau serveur.
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?
--events
qui est nécessaire en plus--routines
et--triggers
vous aussi omis--single-transaction
pour éviter le verrouillage des tables inutilement.--single-transaction
ne 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-transaction
est une bonne idée si vous utilisez tous InnoDB et que vous souhaitez éviter le blocage lors desmysqldump
exécutions.