트리거 및 절차를 사용하여 MySQL 데이터베이스를 내보내는 방법은 무엇입니까?


82

.sql모든 트리거 및 절차 를 사용하여 MySQL 데이터베이스 덤프 ( 파일) 를 만드는 방법은 무엇입니까?


mysqldump 명령에 -R 옵션을 추가하기 만하면됩니다.
Deepanshu Jain

답변:


121

mysqldump에 의해 의지 백업 기본 모든 트리거 하지만 NOT 저장 프로 시저 / 함수 . 이 동작을 제어하는 ​​2 개의 mysqldump 매개 변수가 있습니다.

  • --routines – 기본적으로 FALSE
  • --triggers – 기본적으로 TRUE

그래서 mysqldump명령에서 다음 --routines과 같이 추가하십시오 .

mysqldump <other mysqldump options> --routines > outputfile.sql

mysqldump 인수에 대한 MySQL 문서를 참조하십시오 .


MySQL "5.1.48-community"가 있습니다. "mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt> dumpfile.sql;"을 실행합니다. 하지만 오류가 발생하고 오류는 "ERROR 1064 (42000) : SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 'mysql dump --routines --no'근처에서 사용할 올바른 구문을 확인하십시오. -create-info --no-data --no-create-db --skip-opt> dum 'at line 1 ". 그것을 해결하는 방법? -
Yugal

"-p -uusername dbname"명령에 추가하면 ";"이 필요하지 않습니다. 마지막 로그인
하임 Evgi에게

1
또한 MySQL 명령 줄 클라이언트 나 phpMyAdmin 또는 기타 쿼리 도구가 아닌 셸 프롬프트에서 mysqldump를 실행해야합니다.
Bill Karwin 2014 년

@HaimEvgi, -routines대신 왜 말 --routines합니까?
Pacerier

--routines그러나 사용자에게 mysql.proc테이블에 대한 충분한 액세스 권한이있는 경우에만 작동 합니다. GRANT SELECT ON mysql.proc TO '<user>'@'localhost';
Rocki

20

MYSQL의 전문 사용자에게는 분명 할 수 있지만 기본값이 기능을 내 보내지 않는지 파악하는 동안 시간을 ​​낭비했습니다. 그래서 여기에서 --routines param이 작동하도록하려면 true로 설정해야 한다고 언급 하려고했습니다.

mysqldump --routines=true -u <user> my_database > my_database.sql

1
--routines = true를 사용할 필요가 없습니다. Sproc은 기본적으로 덤프되지 않습니다. 허용되는 답변의 예제에 따라 --routines를 포함하기 만하면됩니다.
gview

6

다음 스크립트를 만들었으며 잘 작동했습니다.

#! /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

안녕하세요, 7 행에서 DBUSER 변수가 ""와 othert 사이에있는 이유는 무엇입니까?
rafaelphp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.