xtrabackup
DB가 10GB가 넘어가면서 mysqldump로 백업하면 그 시간동안 서버가 기어다님ㅠㅠ
xtrabackup innobackupex 를 쓰고싶었지만 perl DBI mysql 없어서 실행안됨ㅠㅠ
결국 xtrabackup 을 써봤는데 속도도 빠르고 괜찮아서 걍 쓰기로마음먹고
백업<->복구
백업->증분백업->복구
테스트해본결과 속도도 괜찮고 몇가지 사항만 숙지한다면 복구도 확실해서 쓰기로 마음먹었으나 사용법이 OTZ
1. 백업 = 전체 백업 -> 증분 백업
2. 복구 = 증분+전체백업 합치기 -> 복구
백업(전체 백업)
frm 파일은 백업되지 않음으로
mysql 데이터 폴더 (/usr/local/mysql/data)에 database 폴더를 수동으로 백업한다
cp -r /usr/local/mysql/data/mysql /backup/mysql/xtrabackup_mysql
cp -r /usr/local/mysql/data/mydatabase /backup/mysql/xtrabackup_mydatabase
xtrabackup --backup --target-dir=/backup/mysql/xtrabackup_basedir
xtrabackup --prepare --target-dir=/backup/mysql/xtrabackup_basedir
백업(증분 백업)
xtrabackup --backup --target-dir=/backup/mysql/incremental/ --incremental-basedir=/backup/mysql/xtrabackup_basedir/
복구
0. 전체 백업에 증분백업을 합친다
1. mysql 종료
2. mysql 데이터 폴더 (/usr/local/mysql/data) 삭제
3. mysql 데이터 폴더 (/usr/local/mysql/data)에 database 폴더를 수동으로 백업한다 <- 이걸복사
4. 백업데이터를 복사
5. mysql 데이터 폴더 소유권 변경
6. mysql 시작
0. xtrabackup --prepare --apply-log-only --target-dir=/backup/xtrabackup/ --incremental-dir=/backup/mysql/incremental/
1. service mysqld stop
2. rm -rf /usr/local/mysql/data
3. mv /backup/mysql/xtrabackup_basedir /usr/local/mysql/data
4.
cp -r /backup/mysql/xtrabackup_mysql /usr/local/mysql/data/myssql
cp -r /backup/mysql/xtrabackup_mydatabase /usr/local/mysql/data/mydatabase
5. chown -R mysql:mysql /usr/local/mysql/data
6. service mysqld start
crontab 에 등록해서 매월 1일에 전체백업을 하고 월 말까지 날마다 증분 백업하는 스크립트 예
[backup_month.sh]
#!/bin/bash
# xtrabackup
# 매월 첫 달에 실행된다
# DB xtrabackup base point
if [ ! -d /backup/mysql ]
then
mkdir /backup/mysql
mkdir /backup/mysql/$(date +%Y-%m)
fi
cp -r /usr/local/mysql/data/mysql /backup/mysql/$(date +%Y-%m)/xtrabackup_mysql
cp -r /usr/local/mysql/data/mydatabase/backup/mysql/$(date +%Y-%m)/xtrabackup_mydatabase
xtrabackup --backup --target-dir=/backup/mysql/$(date +%Y-%m)/xtrabackup_basedir
xtrabackup --prepare --target-dir=/backup/mysql/$(date +%Y-%m)/xtrabackup_basedir
[backup_day.sh]
#!/bin/bash
# xtrabackup
# 매 일 실행된다
# DB xtrabackup base point
if [ ! -d /backup/mysql ]
then
mkdir /backup/mysql
mkdir /backup/mysql/$(date +%Y-%m)
fi
# DB xtrabackup increment point
if [ ! -d /backup/mysql/$(date +%Y-%m)/incremental ]
then
mkdir /backup/mysql/$(date +%Y-%m)/incremental
fi
xtrabackup --backup --target-dir=/backup/mysql/$(date +%Y-%m)/incremental/$(date +%d)/ --incremental-basedir=/backup/mysql/$(date +%Y-%m)/xtrabackup_basedir/
실행권한으로 바꾸고
chmod 0700 backup_month.sh
chmod 0700 backup_day.sh
crontab 등록
crontab -e
00 03 1 * * /root/contab/backup_month.sh
00 06 * * * /root/contab/backup_day.sh
'연구개발 > MYSQL' 카테고리의 다른 글
character-set utf8mb4 사용시 replication slave 구성 주의사항 (0) | 2014.08.28 |
---|---|
MySQL 날짜 함수 정리 (0) | 2014.08.12 |
Percona Xtrabackup 으로 백업/복원하기 (전체,디비별,테이블별) (0) | 2014.08.08 |
MySQL5.1 to MySQL5.5 upgrade 때리기! [Ubuntu jaunty(32bit)] (0) | 2014.08.07 |
mysql 모니터링툴 innotop & mysqlreport (0) | 2014.08.01 |