사용자 도구

사이트 도구


kb:mysqlbackup

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

kb:mysqlbackup [2014/11/08 17:09] (현재)
줄 1: 줄 1:
 +====== MySQL Backup ======
 +[[MySQL]] 백업
 +
 +====== mysqldump 사용 예제 ======
 +뭐, 매뉴얼 페이지 보면 다 나올 내용이다만,​ 옵션이 워낙 많아서... 간단히 정리해놓는 게 좋을 듯 하다.
 +
 +데이터베이스의 테이블만 dump 받기 ​
 +<​code>​
 +mysqldump -u USERNAME -p DATABASE_NAME TABLE_NAME > SQL.sql ​
 +</​code>​
 +
 +데이터베이스의 모든 테이블 dump 받기 ​
 +<​code>​
 +mysqldump -u USERNAME -p DATABASE_NAME > SQL.sql ​
 +</​code>​
 +
 +데이터베이스에서 하나의 테이블 스키마만 dump 받기 ​
 +<​code>​
 +mysqldump -u USERNAME -p -d DATABASE_NAME TABLE_NAME > SCHEMA_SQL.sql
 +</​code>​
 +
 +데이터베이스에서 모든 테이블의 스키마만 dump 받기 ​
 +<​code>​
 +mysqldump -u USERNAME -p -d DATABASE_NAME > SCHEMA_SQL.sql ​
 +</​code>​
 +
 +여러 데이터베이스 dump 받기
 +<​code>​
 +mysqldump -u USERNAME -p --databases DATABASE1 DATABASE2 DATABASE3
 +</​code> ​
 +
 +데이터베이스의 모든 테이블을 압축해서 dump 받기
 +<​code>​
 +mysqldump -u USERNAME -p DATABASE_NAME | gzip > SQL.gz ​
 +</​code>​
 +
 +데이터베이스의 하나의 테이블을 압축해서 dump 받기
 +<​code>​
 +mysqldump -u USERNAME -p DATABASE_NAME TABLE_NAME | gzip > SQL.gz ​
 +</​code>​
 +
 +압축해서 덤프받은 파일을 데이터베이스에 집어넣기 ​
 +<​code>​
 +gunzip < comp_section.gz | mysql -u USERNAME -p DATABASE_NAME
 +</​code>​
 +
 +원격 호스트의 데이터베이스를 압축해서 dump 받기 ​
 +<​code>​
 +mysqldump -h HOSTNAME -u USERNAME -p DATABASE_NAME | gzip > comp.sql.gz
 +</​code>​
 +
 +
 +====== 고려해볼만한 mysqldump 옵션들 ======
 +^ 옵션 ^ 내용 ^
 +| --add-drop-table | CREATE TABLE TABLENAME 문 앞에다가 DROP TABLE IF EXISTS TABLENAME 문을 집어넣는다. 즉 덤프 받은 데이터베이스를 좀 더 쉽게 데이터베이스에다 집어넣을 수 있게 만들어준다. |
 +| -q 또는 --quick | 쿼리를 버퍼링하지 않고, 다이렉트로 출력한다. |
 +| --add-locks | INSERT 문 앞 뒤로 락을 걸어준다. |
 +| --e 또는 --extended-insert | 다행(multiline) INSERT 문을 사용하여 좀 더 작고 빠른 INSERT 문을 생성한다. |
 +| -l 또는 --lock-tables | 백업용 읽기를 위해 모든 테이블에 락을 건다. |
 +| --opt | --add-drop-table --add-locks --all --extended-insert --quick --lock-tables 플래그를 모두 설정한 것과 같다. |
 +
 +
 +====== mysqldump + crontab ======
 +다음과 같은 명령어를 크론탭에다 넣으면, 매시간마다 BACKUP_2003_12_15_06 과 같은 이름의 백업 파일이 생성된다. (크론탭 안에서 바로 할 수도 있는데, FreeBSD에서는 왠지 제대로 안 되어서 스크립트로 빼냈다.)
 +
 +**backup_database**
 +<code sh>
 +/​usr/​local/​mysql/​bin/​mysqldump -u USERNAME -p PASSWORD --all-databases > /​db_backup/​BACKUP_`date +%Y_%m_%d_%H`
 +</​code>​
 +
 +**crontab -e**
 +<code sh>
 +0 6 * * * /​root/​backup_database
 +</​code>​
 +
 +----
 +  * see also [[MySql]]
  
kb/mysqlbackup.txt · 마지막으로 수정됨: 2014/11/08 17:09 (바깥 편집)