Saya biasanya tidak memisahkan pemicu dari tabel yang seharusnya. Saya dump seperti ini:
mysqldump -u... -p... --no-data --routines --triggers dbname > DBSchema.sql
Periksa keberadaan rutin dan pemicu seperti ini:
SELECT COUNT(1) FROM mysql.proc;
SELECT COUNT(1) FROM information_schema.triggers;
SELECT * FROM information_schema.triggers\G
Jika Anda ingin menyelesaikan ini untuk semua DB di MySQL Instance, lakukan ini:
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
Dengan begitu, prosedur tersimpan disimpan dalam dump rutin untuk DB, sementara skema dan pemicu masuk dump lain.
grep 'CREATE TRIGGER'
--triggers
dibuang secara default? Apa perbedaan antara--no-data --routines --triggers
vs--no-data --routines
?--skip-triggers
pada kesempatan seperti itu (seperti menyiapkan budak yang tidak membutuhkan pemicu). Sebagai pengingat untuk diri saya sendiri tentang kemungkinan melewatkan opsi, saya selalu menggunakan flag tertentu di mysqldumps (--routines
,--triggers
) walaupun itu default. Jadi, itu hanya preferensi pribadi. Jika Anda percaya bahwa pengaturan default akan tetap default dari versi ke versi dan tidak pernah berurusan dengan situasi adhoc, maka Anda mengekspresikan mysqldumps sesuai kebutuhan selama mysqldump yang dihasilkan benar untuk Anda.$2
;; \ n $ 1