답변:
--no-data
mysqldump와 함께 스위치를 사용하여 데이터를 덤프하지 말고 테이블 구조 만 덤프하십시오.
테이블에 대한 CREATE TABLE 문이 출력됩니다.
이 같은
mysqldump --no-data -h localhost -u root -ppassword mydatabase > mydatabase_backup.sql
특정 테이블을 대상으로하려면 데이터베이스 이름 뒤에 테이블을 입력하십시오.
mysqldump --no-data -h localhost -u root -ppassword mydatabase table1 table2 > mydatabase_backup.sql
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_no-data
LukeR이 말했듯이 mysqldump의 --no-data 옵션은 원하는 것을 수행합니다.
여기에 모든 MySQL 데이터베이스를 일반 텍스트 파일로 덤프하고 각 데이터베이스의 테이블 스키마 및 데이터에 대해 별도의 덤프 파일을 작성하는 필자가 작성한 백업 스크립트가 있습니다 (다른 mysql 서버없이 테이블을 복원하거나 작성하는 것이 일반적입니다) CREATE TABLE / CREATE INDEX etc 명령만으로 작은 파일을 이미 가지고 있으면 훨씬 쉽게 수행 할 수 있습니다)
#! / bin / bash # backup-mysql.sh # # Craig Sanders <cas@taz.net.au> #이 스크립트는 공개 도메인에 있습니다. 원하는대로하세요 MYUSER = "USERNAME" MYPWD = "PASSWD" ARGS = "-단일 트랜잭션 --flush-logs --complete-insert" DATABASES = $ (mysql -D mysql --skip-column-names -B -e 'show database;'| egrep -v 'information_schema'); BACKUPDIR = / var / backups / mysql YEAR = $ (날짜 + "% Y") MONTH = $ (날짜 + "% m") DAY = $ (날짜 + "% d") DATE = "$ YEAR- $ MONTH / $ YEAR- $ MONTH- $ DAY" mkdir -p $ BACKUPDIR / $ DATE cd $ BACKUPDIR / $ DATE $ DATABASES에서 i의 경우; 하다 echo -n "$ i 백업 : 스키마 ..." mysqldump $ ARGS --no-data -u $ MYUSER -p $ MYPWD $ i> $ i.schema.sql echo -n "데이터 ..." mysqldump $ ARGS --skip-opt --no-create-db --no-create-info -u $ MYUSER -p $ MYPWD $ i> $ i.data.sql echo -n "압축 중 ..." gzip -9fq $ i.schema.sql $ i.data.sql 에코 "완료" 끝난 # 30 일이 지난 백업 파일 삭제 OLD = $ ($ BACKUPDIR -type d -mtime +30 찾기) [-n "$ OLD"] 인 경우; 그때 오래된 백업 파일을 에코 삭제 : $ OLD 에코 $ OLD | xargs rm -rfv fi
--routines
스키마 스크립트에 추가 할 것을 제안 할 수 있습니까?
mysql
명령 줄 인터페이스를 통해 수동으로이 작업을 수행 DESCRIBE <tablename>
하고 결과를 복사 / 붙여 넣기하여 수행 할 수도 있습니다 .