Simplemente agregue la opción -R en el comando mysqldump.
Deepanshu Jain
Respuestas:
122
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 defecto
así que al mysqldumpmando, agregue --routinescomo:
tengo MySQL "5.1.48-community" ejecuto "mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt> dumpfile.sql;" pero está dando un error y el error es "ERROR 1064 (42000): Tiene un error en su sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para la sintaxis correcta para usar cerca de 'mysql dump --routines --no -create-info --no-data --no-create-db --skip-opt> dum 'en la línea 1 ". ¿Cómo resolverlo? -
Yugal
agregue al comando "-p -uusername dbname", y no necesita el ";" firmar al final
Haim Evgi
1
También tenga en cuenta que debe ejecutar mysqldump en el indicador de shell, no en el cliente de línea de comandos de MySQL o en phpMyAdmin u otra herramienta de consulta.
Bill Karwin
@HaimEvgi, ¿Por qué dices en -routineslugar de --routines?
Pacerier
--routinesSin embargo, solo funciona si el usuario tiene suficientes derechos de acceso a la mysql.procmesa. GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
Rocki
20
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.
No es necesario utilizar --routines = true. Los sprocs NO se descargan de forma predeterminada. Simplemente necesita incluir --rutinas según el ejemplo en la respuesta aceptada.
Respuestas:
mysqldump
hará 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
mysqldump
mando, agregue--routines
como:Consulte la documentación de MySQL sobre los argumentos de mysqldump .
fuente
-routines
lugar de--routines
?--routines
Sin embargo, solo funciona si el usuario tiene suficientes derechos de acceso a lamysql.proc
mesa.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.
fuente
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.
fuente