티스토리 뷰

반응형

아래와 같이 쉘 스크립트를 만들어서 crontab 에 등록하여 자동 백업할 수 있다.

 

  • 무결성 보장 : --single-transaction
  • 프로시저 포함 : --routines
  • 한글지원 : default-character-set=utf8
#!/bin/sh

## yyyymmdd_hhmm format
DATE=$(date "+%Y%m%d")
TIME=$(date "+%Y%m%d_%H%M")
PATH="/home/woohaeng/MyDisk/Backup/MySql"
PATHTIME=${PATH}/${DATE}/${TIME}

#/bin/mv ${PATH}*.sql "/media/vf-db/Seagate Backup Plus Drive/DB백업"

cd ${PATH}
/bin/mkdir ${DATE}

/usr/bin/mysqldump --single-transaction --routines --databases qhedge_dev_daily -h localhost -u root -p*** --default-character-set=utf8 > ${PATHTIME}_qhedge_dev_daily.sql
/usr/bin/mysqldump --single-transaction --routines --databases vf_pattern -h localhost -u root -p*** --default-character-set=utf8 > ${PATHTIME}_vf_pattern.sql
/usr/bin/mysqldump --single-transaction --routines --databases vf_stockdb -h localhost -u root -p*** --default-character-set=utf8 > ${PATHTIME}_vf_stockdb.sql
/usr/bin/mysqldump --single-transaction --routines --databases mysql -h localhost -u root -p*** --default-character-set=utf8 > ${PATHTIME}_mysql.sql


zip ${PATH}/${DATE}.zip ${PATH}/${DATE}/*

특정 테이블만 백업할 경우 데이터베이스명 뒤에 테이블명을 나열하면 되는데 "--databases" 옵션이 있을경우 동작하지 않아 제거 후 아래와 같이 수행한다.

또한 DROP문을 생성하지 않게 하려면 "--skip-add-drop-table" 옵션을 추가하고, CREATE문은 생성하지 않으려면 "--no-create-info" 옵션을 추가한다.

/usr/bin/mysqldump --single-transaction --routines 데이터베이스명 테이블명 -h localhost -u 아이디 -p --default-character-set=utf8 --skip-add-drop-table --no-create-info > ~/저장파일명.sql



>> 복구

$ mysql -u root -p < vf_stockdb_us.sql

또는 mysql 로 로그인 하고 source 문을 이용하여 복구할 수 있다.

$ mysql -u root -p

MariaDB> use 데이터베이스명
MariaDB> source ~/파일명.sql
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함