¿Cómo crear un volcado de base de datos MySQL ( .sqlarchivo) con todos sus desencadenantes y procedimientos?
Respuestas:
mysqldumphará una copia de seguridad por defecto de todos los disparadores pero NO de los procedimientos / funciones almacenados . Hay 2 parámetros de mysqldump que controlan este comportamiento:
--routines - FALSO por defecto--triggers - VERDADERO por defectoasí que al mysqldumpmando, agregue --routinescomo:
mysqldump <other mysqldump options> --routines > outputfile.sql
Consulte la documentación de MySQL sobre los argumentos de mysqldump .
-routineslugar de --routines?
--routinesSin embargo, solo funciona si el usuario tiene suficientes derechos de acceso a la mysql.procmesa. GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
Puede ser obvio para los usuarios expertos de MYSQL, pero perdí algo de tiempo tratando de averiguar el valor predeterminado que no exportaría funciones. Así que pensé mencionar aquí que --routines param debe establecerse en verdadero para que funcione.
mysqldump --routines=true -u <user> my_database > my_database.sql
Creé el siguiente script y me funcionó muy bien.
#! /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*
y llama al script usando argumentos de línea de comando.
backupdb.sh my_db dev_user dev_password