mysqldump --help
# 테이블 자료만 압축으로 백업
mysqldump -u user -p --opt --extended-insert -t -q database | gzip 〉 database.sql.gz
mysqldump -u user -p --opt --extended-insert -t -q database table | gzip 〉 database.sql.gz
# 압축자료를 그대로 복원
gunzip 〈 database.sql.gz | mysql -u user -p database
# 압축자료를 그대로 강제 복원
gunzip 〈 database.sql.gz | mysql -u user -p -f database
주의: 만약, --quick 이나 --opt 없이 덤프하면 메모리가 많이 소모되어 큰 데이터베이스의 경우 문제가 발생할 수 있다.
mysqldump -u user -p --add-locks database 〉 database.sql
# 테이블의 덤프하기전에 해당 테이블을 잠그고 덤프한 후에 테이블을 풀어준다.
mysqldump -u user -p -c database 〉 database.sql
# -c, --complte-insert
# INSERT 구문에서 필드명을 포함한 전체를 덤프
mysqldmp -u user -p -f database 〉 database.sql
# -f, --force # 덤프 중 에러가 있어도 계속 진행
mysqldump -u user -p -h hostname database 〉 database.sql
# -h, --host=host # 특정 호스트의 MySQL 에서 데이터 덤프
mysqldump -u user -p -t database 〉 database.sql
# -t, --no-create-info # 테이블 생성 정보는 덤프하지 않음(데이터만 덤프)
mysqldump -u user -p -d database 〉 database.sql
# -d, --no-data # 테이블 스키마만 덤프
mysql -u user -p -q database 〉 database.sql
# -q, --quick # 버퍼를 사용하지 않고 바로 표준출력으로 보낸다.
# AUTO_INCREMENT 초기화
mysqldump -u root -p -h hostname --opt database -d --single-transaction | sed 's/ AUTO_INCREMENT=[0-9]*\b//' > filename.sql
참고 :
- mysql 백업 받기 - mysqldump
- MySQL Database Export - Backup Methods
- mysqldump - Export structure only without autoincrement
- Exporting MySQL without trigger data?
- .5.4 mysqldump — A Database Backup Program - --triggers
--quick : C API의 mysql_use_result() 함수를 사용하므로 속도가 빠르다.
--add-drop-table : 덤프 결과에서 create table 앞에 drop table 절을 추가합니다.
--add-locks : 덤프하기 전에 LOCK table을 이용하여 테이블을 잠그고 덤프후 UNLOCK table을 실행합니다.
--extended-insert : insert 문 하나에서 모든 레코드를 삽입하는 insert 문을 생성합니다.
※ --opt : 위에 나온 옵션을 동시에 사용한 것과 같은 결과를 가져옵니다.
--no-date or -d : 테이블의 스키마만 덤프합니다.
--no-create-info or -t : create table을 출력하지 않고 데이터만 덤프합니다.
--opt 옵션을 주어서 백업하면 나중에 원복을 할때 기존 DB와 TABLE, DATA를 삭제하고 백업한 내용으로 Update를 합니다.
--ignore-table=database.table : 특정테이블을 제외하고 백업한다.
★ --opt 옵션과 -d or -t는 같이 사용할 수 있습니다.
--skip-triggers : Trigger 제외
#2012.05.23 backup.sh
USER="userid" #mysql, userid equal
PASS="mysqlpassowrd"
SOURCE_DIR="/home/$USER/www"
TARGET_DIR="/home/$USER/backup/"
TARGET_FILE="back.$(date +%Y%m%d%H).tar.bz2"
TARGET_SQL="back.$(date +%Y%m%d%H).sql"
mkdir $TARGET_DIR
##### sql dump backup
mysqldump -u$USER -p$PASS -d -q --opt --ignore-table mysql.* | bzip2 -9 > $TARGET_DIR$TARGET_SQL.all.scheme.bz2
mysqldump -u$USER -p$PASS -t -q --opt --ignore-table mysql.* | bzip2 -9 > $TARGET_DIR$TARGET_SQL.all.data.bz2 find $TARGET_DIR -mtime +10 -print -exec rm -rf {} \;
##### user file backup
EXCLUDE="--exclude cache --exclude cash_back --exclude logs"
mkdir $TARGET_DIR
tar cvjf $TARGET_DIR$TARGET_FILE $SOURCE_DIR $EXCLUDE
# 백업
mysqldump -uuserid -p -d -q --opt pickup | bzip2 -9 > back.2012060811.sql.database.scheme.bz2
mysqldump -uuserid -p -t -q --opt pickup | bzip2 -9 > back.2012060811.sql.database.data.bz2
# 복원
bunzip2 < back.2012060811.sql.database.scheme.bz2 | mysql -uuserid -p -f database
bunzip2 < back.2012060811.sql.database.data.bz2 | mysql -uuserid -p -f database
tar xzOf back.2012060811.sql.database.data.bz2 | mysql -uuserid -p -f database
mysql -uuserid -p -f database < backup.sql
- # 2012.07-26 초보자를 위한「MySQL 백업·복구」강좌 - MySQL 백업 기본
mysqldump -u root -p secret --no-create-info --tab=/tmp --fields-terminated-by=',' stocksdb
반응형
'db > mysql' 카테고리의 다른 글
mysql 통계자료 이전을 위한 agent 자료 구축 (0) | 2010.10.27 |
---|---|
mysql 통계자료 이전 쿼리 (0) | 2010.10.26 |
mysql error 2013 Lost connection to MySQL server during query (0) | 2010.10.20 |
mysql error 2006 "MySQL server has gone away" (0) | 2010.10.19 |
MySQL 16진수 자료형 (0) | 2010.09.01 |