.sql
모든 트리거 및 절차 를 사용하여 MySQL 데이터베이스 덤프 ( 파일) 를 만드는 방법은 무엇입니까?
답변:
mysqldump
에 의해 의지 백업 기본 모든 트리거 하지만 NOT 저장 프로 시저 / 함수 . 이 동작을 제어하는 2 개의 mysqldump 매개 변수가 있습니다.
--routines
– 기본적으로 FALSE--triggers
– 기본적으로 TRUE그래서 mysqldump
명령에서 다음 --routines
과 같이 추가하십시오 .
mysqldump <other mysqldump options> --routines > outputfile.sql
mysqldump 인수에 대한 MySQL 문서를 참조하십시오 .
-routines
대신 왜 말 --routines
합니까?
--routines
그러나 사용자에게 mysql.proc
테이블에 대한 충분한 액세스 권한이있는 경우에만 작동 합니다. GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
MYSQL의 전문 사용자에게는 분명 할 수 있지만 기본값이 기능을 내 보내지 않는지 파악하는 동안 시간을 낭비했습니다. 그래서 여기에서 --routines param이 작동하도록하려면 true로 설정해야 한다고 언급 하려고했습니다.
mysqldump --routines=true -u <user> my_database > my_database.sql
다음 스크립트를 만들었으며 잘 작동했습니다.
#! /bin/sh
cd $(dirname $0)
DB=$1
DBUSER=$2
DBPASSWD=$3
FILE=$DB-$(date +%F).sql
mysqldump --routines "--user=${DBUSER}" --password=$DBPASSWD $DB > $PWD/$FILE
gzip $FILE
echo Created $PWD/$FILE*
명령 줄 인수를 사용하여 스크립트를 호출합니다.
backupdb.sh my_db dev_user dev_password