Normalement, je ne sépare pas les déclencheurs des tables auxquelles ils étaient destinés. Je jette comme ça:
mysqldump -u... -p... --no-data --routines --triggers dbname > DBSchema.sql
Vérifiez la présence de routines et de déclencheurs comme celui-ci:
SELECT COUNT(1) FROM mysql.proc;
SELECT COUNT(1) FROM information_schema.triggers;
SELECT * FROM information_schema.triggers\G
Si vous souhaitez que cela soit fait sur toutes les bases de données de l'instance MySQL, procédez comme suit:
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 cette façon, les procédures stockées vont dans un vidage de routines pour la base de données, tandis que le schéma et les déclencheurs vont dans un autre vidage.
grep 'CREATE TRIGGER'
--triggers
vidé par défaut? Quelle serait la différence entre--no-data --routines --triggers
vs--no-data --routines
?--skip-triggers
à de telles occasions (comme la configuration d'esclaves qui n'avaient pas besoin des déclencheurs). Pour me rappeler constamment la possibilité de sauter des options, j'utilise toujours certains drapeaux dans mysqldumps (--routines
,--triggers
) même s'ils sont par défaut. Donc, c'est juste une préférence personnelle. Si vous croyez qu'un paramètre par défaut restera un paramètre par défaut d'une version à une autre et ne traitera jamais de situations ad hoc, alors vous exprimez les mysqldumps comme nécessaire tant que le mysqldump résultant est correct pour vous.$2
;; \ n $ 1