본문 바로가기

IT

MY SQL DB BACK UP(xtrabackup 증분백업)

1) mysql 기본 덤프방법

1.
mysqldata 폴더에 sh 생성

 

2. 쉘 작성 (mysql 기본 덤프방법)
#!/bin/bash

# date formmat
DATE=$(date +%Y%m%d)

# dir create
mkdir -p /home/Backup/$DATE

BACKUP_DIR=/home/Backup/$DATE/
PASS='password'

 

#division
mysqldump -u root -p$PASS TTF > $BACKUP_DIR"backup_TTF2".sql

 

 

 

 

 

 

 

2) xtraBackup 증분백업 이용

mysql8 버전이라 xtra도 8버전 설치 (버전별 설치!)


0. 기존 xtra 버전 삭제
yum install percona-xtrabackup-(버전입력 ex:24~80)

1. percona repository 설치
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

 

2. 리눅스 정책상 설치
yum install http://repo.percona.com/centos/7/RPMS/x86_64/Percona-Server-selinux-56-5.6.51-rel91.0.1.el7.noarch.rpm

 

3. 테스트
yum list | grep percona

4. xtrabackup 패키지 설치
yum install percona-xtrabackup-80

5. xtrabackup 패키지 설치 확인
yum list installed | grep percona-xtrabackup

6. 백업용 db 계정 생성 (권한있는 계정 있으면 상관없음)

 

(쉘 작성)

#user

USER='user'

 

#password

PASS='password'

 

#Dday dir

D_DAY_DIR=/home/Backup/mysqlxtra/$DATE/

 

#full backup
FULL_DIR=$D_DAY_DIR/base/

#inc backup
INC1_DIR=$D_DAY_DIR/inc1/

inc1~ ''''

 

#aplly log (바뀐것 있나 체크)

APPLY_LOG1_DIR=$D_DAY_DIR/apllyLog/

log1~ ''''

 

 

7. full backup 필수
xtrabackup --backup --target-dir=$FULL_DIR --user=$USER --password=$PASS

8. 증분백업 생성 (full backup 베이스)
xtrabackup --backup --target-dir=$INC1_DIR --incremental-basedir=$FULL_DIR --user=$USER --password=$PASS

inc 1~ ''''

 

9. 증분백업 적용 (복원 전 실행)
xtrabackup --prepare --apply-log-only --target-dir=$FULL_DIR
xtrabackup --prepare --apply-log-only --target-dir=$FULL_DIR --incremental-dir=$APPLY_LOG_DIR

inc 1 ~ ''''

 

10. 복구를 진행할 DB서버에 백업본을 전송한다. (네트워크 부하를 낮추기 위해 압축한 후 전송하는 것도 고려할만 하다)
scp -r $FULL_DIR manage1:$D_DAY_DIR

 

11. 복구를 진행할 때는 DB를 중지한다. /var/lib/mysql 경로에 백업파일을 복사하는 과정이다.
# mysql 정지
service mysqld stop

 

# mysql 데이터 삭제
rm -rf /var/lib/mysql

 

# mysql 데이터 백업 
xtrabackup --copy-back --target-dir=/root/sunny/xtrabackup_0205/base/

 

# mysql 폴더 권한부여
chown -R mysql:mysql /var/lib/mysql

 

#mysql 시작
service mysqld start

 

 

 

 

 

스케줄러(crontab) 공통 작업

1. crontab -e 명령어로 스케줄 설정
분  시  일or월  요일  명령어 (> 이후 : 로그설정)
01 03 15 * * /home/mysqldata/mysql_backup.sh > /var/log/cron/cron.sh.log 2>&1

 

2. crontab -l 로 list 확인

'IT' 카테고리의 다른 글