web-dev-qa-db-fra.com

Comment faire une sauvegarde complète de la base de données mysql en utilisant l'utilitaire de ligne de commande mysqldump

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
45
MySQL DBA

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.
14
Knut Haugen

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
  1. -A Pour toutes les bases de données (vous pouvez également utiliser --all-databases)
  2. -R Pour toutes les routines (procédures stockées et déclencheurs)
  3. -E Pour tous les événements
  4. --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.

73
NarasimhaTejaJ

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
15
ajay singh mittal

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 ...
5
jonfm

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.

2
sunil

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)

2
Vitaly Kushner

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
0
M. Hamza Rajput

Pour créer un vidage, suivez les étapes ci-dessous:

  1. 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.

  2. Maintenant, si vous appuyez sur mysqldump dans CMD, vous pouvez voir que CMD est capable d'identifier la commande de vidage.

  3. Exécutez maintenant "mysqldump -h [Host] -P [port] -u [username] -p --skip-triggers --no-create-info --single-transaction --quick --lock-tables = false ABC_databse> c:\xyz.sql "
  4. La commande ci-dessus demandera un mot de passe, puis elle commencera le traitement.
0
Rahul Maurya