Normalmente no separo los desencadenantes de las tablas para las que fueron diseñados. Me vuelvo así:
mysqldump -u... -p... --no-data --routines --triggers dbname > DBSchema.sql
Verifique la presencia de rutinas y desencadenantes como este:
SELECT COUNT(1) FROM mysql.proc;
SELECT COUNT(1) FROM information_schema.triggers;
SELECT * FROM information_schema.triggers\G
Si desea hacer esto en todos los DB en la instancia de MySQL, haga esto:
mysql -u... -p... -A -N -e"SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('information_schema','mysql')" > /tmp/dblist.txt
for DB in `cat /tmp/dblist.txt`
do
mysqldump -u... -p... --no-data --no-create-info --routines dbname > ${DB}-routines.sql
mysqldump -u... -p... --no-data --triggers dbname > ${DB}-schema-triggers.sql
done
De esa forma, los procedimientos almacenados van en un volcado de rutinas para el DB, mientras que el esquema y los desencadenantes van en otro volcado.
grep 'CREATE TRIGGER'
--triggers
abandona por defecto? ¿Cuál sería la diferencia entre--no-data --routines --triggers
vs--no-data --routines
?--skip-triggers
en tales ocasiones (como configurar esclavos que no necesitaban los disparadores). Como un recordatorio constante para mí mismo de la posibilidad de omitir opciones, siempre uso ciertos indicadores en mysqldumps (--routines
,--triggers
) incluso si son predeterminados. Entonces, es solo una preferencia personal. Si confía en que una configuración predeterminada seguirá siendo una versión predeterminada y nunca se ocupará de situaciones ad hoc, entonces expresa los mysqldumps según sea necesario siempre que el mysqldump resultante sea correcto para usted.$2
;; \ n $ 1