MySQL에서 테이블 구조는 백업하지만 데이터는 백업하지 않는 방법


20

데이터베이스 백업을 위해 MySQL 관리자를 사용하고 있습니다. 모든 테이블을 사용하여 전체 데이터베이스를 완벽하게 백업 할 수 있습니다. 크기가 매우 큰 일부 테이블이 있으므로 테이블 구조 (요소 만) 만 백업 할 수는 있지만 데이터는 백업 할 수 없는지 궁금합니다.

답변:


40

--no-datamysqldump와 함께 스위치를 사용하여 데이터를 덤프하지 말고 테이블 구조 만 덤프하십시오.

테이블에 대한 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

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html


+1이 옳습니다.
David Pashley

고마워 LukeR. 나는 그것을 관리 할 수 ​​있었다. 글을 쓰는 순간에는 mysqldump에 대해 아무것도 몰랐지만 --no-data 스위치로 문제를 해결할 수있었습니다. 그런 다음 MySQL 관리자에서 해당 테이블의 "CREATE SCRIPT"를 찾았 으므로이 대안 으로이 문제를 해결할 수도 있습니다.

3

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

답변 해 주셔서 감사합니다. 처음에 LukeR 답변을 선택했습니다. 스크립트 주셔서 감사합니다, 좋은 참조입니다.

--routines스키마 스크립트에 추가 할 것을 제안 할 수 있습니까?
Jonathan

0

mysql명령 줄 인터페이스를 통해 수동으로이 작업을 수행 DESCRIBE <tablename>하고 결과를 복사 / 붙여 넣기하여 수행 할 수도 있습니다 .


DESCRIBE는 복사하여 붙여 넣을 수있는 것을 제공하지 않습니다. 테이블 만들기가 표시됩니다.
David Pashley

이 CREATE 문이있을 필요가 무엇의 덤프은 아니지만, 수행 쇼 열 유형과 관계
워렌
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.