Comment exporter/vider la base de données mysql avec tous les déclencheurs et procédures.
mysqldump
sauvegardera par défaut tous les déclencheurs mais [~ # ~] pas [~ # ~] les procédures/fonctions stockées . Il y a 2 paramètres mysqldump qui contrôlent ce comportement:
--routines
- FALSE par défaut--triggers
- VRAI par défautdonc dans la commande mysqldump
, ajoutez --routines
comme :
mysqldump <other mysqldump options> --routines > outputfile.sql
lire plus dans cet article
C'est peut-être évident pour les utilisateurs experts de MYSQL, mais j'ai perdu du temps à essayer de comprendre que la valeur par défaut n'exporterait pas les fonctions. J'ai donc pensé mentionner ici que - routines param doit être défini sur true pour que cela fonctionne.
mysqldump --routines=true -u <user> my_database > my_database.sql
J'ai créé le script suivant et cela a bien fonctionné pour moi.
#! /bin/sh
cd $(dirname $0)
DB=$1
DBUSER=$2
DBPASSWD=$3
FILE=$DB-$(date +%F).sql
mysqldump --routines "--user=${DBUSER}" --password=$DBPASSWD $DB > $PWD/$FILE
gzip $FILE
echo Created $PWD/$FILE*
et vous appelez le script en utilisant des arguments de ligne de commande.
backupdb.sh my_db dev_user dev_password