#엑스트라 백업 설치 rpm -Uhv https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm

#yum 으로 설치 yum install xtrabackup

#디렉토리 확인 ll /backup ll /backup/full_backup ll /backup/incre_backup

#디렉토리 생성 mkdir /backup mkdir /backup/full_backup mkdir /backup/incre_backup

#crontab 에 설정 * */1 * * * root /root/bin/mysql_innodb_backup.sh

crontab 와 db_full_backup_time 은 중요합니다.스크립스트는 crontab 실행될때 백업이 되며, db_full_backup_time이 아닐경우 차등백업을 실행합니다.

따라서 1시간마다 백업을하며 db_full_backup_time이 있을경우에 full 백업을 합니다.

아래의 스크립트에서 03 15을 변수로 줄경우 배열로 받아서 참일경우 full 백업 거짓일경우 차등백업을 진행합니다.따라서 새벽 3시 오후3시에 백업을 진행 합니다.

!/bin/bash

DB Backup

BAK_DIR=/backup; TODAY=$(date +%Y%m%d –date ‘12 hours ago’)

TODAY=$(date +%Y%m%d)

RMTODAY=$(date +%Y%m%d –date ‘10 days ago’)

Delete DB File

rm -rf $BAK_DIR/full_backup/$RMTODAY* rm -rf $BAK_DIR/incre_backup/$RMTODAY*

Backup Time

db_full_backup_time=(“03 15”)

Now Time & Time Check

TOTIME=$(date +%H)

TOTIME=$(date +%H)

echo $TOTIME in_array() { local needle array value needle="${1}"; shift; array=("${@}") for value in ${array[@]}; do [ “${value}” == “${needle}” ] && echo “true” && return; done echo “false” }

db_full_backup_check=in_array $TOTIME ${db_full_backup_time[@]}

if [ “$db_full_backup_check” == “true” ]; then

full backup

/bin/nice -n 10 /usr/bin/ionice -c2 -n 7 /usr/bin/innobackupex –defaults-file=/etc/my.cnf \ –user=root –password=‘1234’ –slave-info –no-timestamp \ –compress $BAK_DIR/full_backup/$TODAY else

hot backup

/bin/nice -n 10 /usr/bin/ionice -c2 -n 7 /usr/bin/innobackupex –defaults-file=/etc/my.cnf \ –user=root –password=‘1234’ –no-timestamp –compress –incremental \ –incremental-basedir=$BAK_DIR/full_backup/$TODAY $BAK_DIR/incre_backup/$TODAY/$TOTIME fi