Guardar procedimientos, funciones y triggers en MySQL al hacer un dump
Si sois de los que aprovecháis las nuevas funcionalidades de MySQL como yo y dentro de vuestra base de datos usáis: stored procedures, functios o los famosos triggers (disparadores), os habréis dado cuenta que en vuestro dump, es decir en vuestras copias de seguridad, éstos no aparecen si los hacéis de la forma típica.
Yo me di cuenta de la mala forma, es decir, cuando recuperas el dump y te das cuenta de que no están en ningún sitio. Por eso mismo os traigo esta entrada, para que no os pase y tengáis en cuenta que si usáis este tipo de cosas, quizás debáis reformar la forma en la que llamáis a mysqldump.
Por defecto y por fortuna los triggers sí son guardados por defecto por mysqldump. Para añadir procedimientos y funciones, las llamadas rutinas, deberemos añadir el parámetro –routines, veamos:
mysqldump <resto de opciones> --routines salida.sql
Con esto ya tendríamos el problema resuelto, sin embargo, si lo que queréis es separar tablas y datos, de triggers y rutinas, podemos hacer lo siguiente, y generar un fichero con cada funcionalidad:
mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt > solo_triggers_rutinas.sql
Finalmente, el paso contrario, para recuperar estos ficheros, sería el siguiente:
mysql <base_datos> < salida.sql
Todo ello adecentado con el usuario y contraseña correspondiente y los parámetros típicos para conectaros a MySQL:
mysql -u nombre_usuario -h direccion_servidor -p
Esta información es una traducción y adaptación de este original en inglés del blog inglés: MDLog:/sysadmin.