Comment puis-je faire une sauvegarde complète de la base de données mysql en utilisant mysqldump? Lorsque je fais une sauvegarde, mes tables de la base de données spécifiée sont uniquement sauvegardées. Les procédures et fonctions ne le sont pas.
Voici la commande de sauvegarde que j'utilise:
(Le système d'exploitation est Windows Vista.)
mysqldump -u username -p db1 > backup.sql
Cela dépend un peu de votre version. Avant 5.0.13, cela n'était pas possible avec mysqldump.
Depuis la page de manuel mysqldump (v 5.1.30)
--routines, -R
Dump stored routines (functions and procedures) from the dumped
databases. Use of this option requires the SELECT privilege for the
mysql.proc table. The output generated by using --routines contains
CREATE PROCEDURE and CREATE FUNCTION statements to re-create the
routines. However, these statements do not include attributes such
as the routine creation and modification timestamps. This means that
when the routines are reloaded, they will be created with the
timestamps equal to the reload time.
...
This option was added in MySQL 5.0.13. Before that, stored routines
are not dumped. Routine DEFINER values are not dumped until MySQL
5.0.20. This means that before 5.0.20, when routines are reloaded,
they will be created with the definer set to the reloading user. If
you require routines to be re-created with their original definer,
dump and load the contents of the mysql.proc table directly as
described earlier.
Si vous souhaitez effectuer une sauvegarde complète, c'est-à-dire toutes les bases de données, procédures, routines et événements sans interrompre les connexions:
mysqldump -u [username] -p -A -R -E --triggers --single-transaction > full_backup.sql
-A
Pour toutes les bases de données (vous pouvez également utiliser --all-databases
)-R
Pour toutes les routines (procédures stockées et déclencheurs)-E
Pour tous les événements--single-transaction
Sans verrouiller les tables, c'est-à-dire sans interrompre aucune connexion (R/W).Si vous souhaitez effectuer une sauvegarde uniquement des bases de données spécifiées:
mysqldump -u [username] -p [database_name] [other_database_name] -R -e --triggers --single-transaction > database_backup.sql
Si vous souhaitez effectuer une sauvegarde uniquement d'une table spécifique dans une base de données:
mysqldump -u [username] -p [database_name] [table_name] > table_backup.sql
Si vous souhaitez effectuer une sauvegarde de la structure de la base de données, ajoutez simplement --no-data
aux commandes précédentes:
mysqldump -u [username] –p[password] –-no-data [database_name] > dump_file.sql
mysqldump
a beaucoup plus d'options, qui sont toutes documentées dans la documentation mysqldump
ou en exécutant man mysqldump
sur la ligne de commande.
Utilisez ces commandes: -
mysqldump <other mysqldump options> --routines > outputfile.sql
Si nous voulons sauvegarder UNIQUEMENT les procédures stockées et les déclencheurs et non les tables et les données mysql, nous devons exécuter quelque chose comme:
mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt <database> > outputfile.sql
Si vous devez les importer sur un autre serveur/base de données, vous devrez exécuter quelque chose comme:
mysql <database> < outputfile.sql
En plus de l'indicateur --routines, vous devrez accorder à l'utilisateur de sauvegarde des autorisations pour lire les procédures stockées:
GRANT SELECT ON `mysql`.`proc` TO <backup user>@<backup Host>;
Mon ensemble minimal de privilèges GRANT pour l'utilisateur de sauvegarde est:
GRANT USAGE ON *.* TO ...
GRANT SELECT, LOCK TABLES ON <target_db>.* TO ...
GRANT SELECT ON `mysql`.`proc` TO ...
J'utilise MySQL 5.5.40. Cette version a l'option --all-databases
mysqldump -u<username> -p<password> --all-databases --events > /tmp/all_databases__`date +%d_%b_%Y_%H_%M_%S`.sql
Cette commande créera une sauvegarde complète de toutes les bases de données du serveur MySQL dans un fichier nommé à la date-heure actuelle.
Utilisez '-R' pour sauvegarder les procédures stockées, mais gardez également à l'esprit que si vous voulez un vidage cohérent de votre base de données pendant sa modification, vous devez utiliser --single-transaction
(si vous ne sauvegardez que innodb) ou --lock-all-tables
(si vous avez également besoin de tables myisam)
Sur MySQL 5.7 son travail pour moi, j'utilise CentOS7.
Pour prendre Dump.
Commande:
mysqldump -u user_name -p database_name -R -E > file_name.sql
Exemple:
mysqldump -u root -p mr_sbc_clean -R -E > mr_sbc_clean_dump.sql
Pour déployer Dump.
Commande:
mysql -u user_name -p database_name < file_name.sql
Exemple:
mysql -u root -p mr_sbc_clean_new < mr_sbc_clean_dump.sql
Pour créer un vidage, suivez les étapes ci-dessous:
Ouvrez CMD et allez dans le dossier bin où vous avez installé votre MySQL
ex: C:\Program Files\MySQL\MySQL Server 8.0\bin. Si vous voyez dans ce
Le dossier mysqldump.exe sera là. Ou vous avez configuré le dossier ci-dessus dans votre variable Path de variable d'environnement.
Maintenant, si vous appuyez sur mysqldump dans CMD, vous pouvez voir que CMD est capable d'identifier la commande de vidage.