답변:
나는 보통 그들이 의도 한 테이블에서 트리거를 분리하지 않습니다. 나는 이렇게 덤프 :
mysqldump -u... -p... --no-data --routines --triggers dbname > DBSchema.sql
다음과 같은 루틴 및 트리거가 있는지 확인하십시오.
SELECT COUNT(1) FROM mysql.proc;
SELECT COUNT(1) FROM information_schema.triggers;
SELECT * FROM information_schema.triggers\G
MySQL 인스턴스의 모든 DB에이를 수행하려면 다음을 수행하십시오.
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
이렇게하면 저장 프로 시저가 DB에 대한 루틴 덤프로 이동하지만 스키마와 트리거는 다른 덤프로 이동합니다.
--triggers
기본적으로 덤프 되지 않습니까? --no-data --routines --triggers
대의 차이점은 무엇입니까 --no-data --routines
?
--skip-triggers
가 필요하지 않은 슬레이브 설정과 같은 경우에 사용할 수 있습니다 . 옵션을 건너 뛸 수 있다는 가능성을 항상 상기시키기 위해 기본 플래그 인 경우에도 항상 mysqldumps ( --routines
, --triggers
) 에 특정 플래그를 사용 합니다. 따라서 개인적인 취향 일뿐입니다. 기본 설정이 버전마다 기본값으로 유지되고 임시 상황을 처리하지 않는다고 확신하는 경우 결과 mysqldump가 올바른 한 mysqldumps를 필요에 따라 표현하십시오.
$2
; \ n $ (1)
grep 'CREATE TRIGGER'