Name
Last commit
Last update
..
README.md dbms 백업추가

logo

MariaDB Backup 구성

mariabackup을 이용한 일일/증분 백업을 수행한다.

DB 백업 구성

  • mariabackup을 이용한 일일백업 ( 경로는 /BACKUP/$service/FULL )
  • mariabackup을 이용한 증분백업 ( 경로는 /BACKUP/$service/INC )
  • Backup DATA Review

mariabackup을 이용한 백업 스크립트 전체

# cat /BACKUP/scripts/mariabackup.sh
#!/bin/bash
# Description : MariaDB Full/Inc Backup Script

date=`date +"%Y-%m-%d"`
service="HONGSNET"
dst="/BACKUP/$service/FULL"
incdir="/BACKUP/$service/INC"
xbk="/usr/bin/mariabackup"
user="아이디"
password="패스워드"
slave="no" # yes | no
inc=30

mkdir -p $dst || exit 1
mkdir -p $incdir || exit 1

ulimit -Sn 65535
ulimit -Hn 65535

############ FULL ############
if [ ! -d $dst/0 ]; then
    #최초 백업이라면..
    if [[ $slave == "yes" ]]; then
            $xbk --backup --slave-info --target-dir ${dst}/0 --user ${user} --password ${password}
    else
            $xbk --backup --no-lock --target-dir ${dst}/0 --user ${user} --password ${password}
    fi

else
    #최초 백업이 완료되었고, 증분을 수행해야할 경우
    if [[ $slave == "yes" ]]; then
        $xbk --backup --slave-info --target-dir ${dst}/1 --incremental-basedir ${dst}/0 --user ${user} --password ${password}
        if [[ -d ${incdir}/$date ]]; then
                rm -rf ${incdir}/$date
        else
                cp -rf ${dst}/1 ${incdir}/$date
        fi
    else
        $xbk --backup --no-lock --target-dir ${dst}/1 --incremental-basedir ${dst}/0 --user ${user} --password ${password}
        if [[ -d ${incdir}/$date ]]; then
                rm -rf ${incdir}/$date
        else
                cp -rf ${dst}/1 ${incdir}/$date
        fi
    fi

    #매일 백업된 전체백업의 준비를 한다. 만약 이 과정을 무시하면, 다음의 에러가 발생된다.
    #error: applying incremental backup needs a prepared target.
    $xbk --prepare --target-dir ${dst}/0

    #위의 준비가 완료되었으면, 실제로 매일 백업된 증분백업을 전체백업으로 합친다.
    $xbk --prepare --target-dir ${dst}/0 --incremental-dir ${dst}/1 --user ${user} --password ${password}
    #이 과정은 전체백업에 대한 부분이므로, 증분백업된 내역은 제거한다.
    rm -rf ${dst}/1
fi

find $incdir/ -ctime +${inc} -exec rm -rf {} \;

!참고 : Master DBMS가 대상일 경우 slave=no, Slave DBMS가 대상일 경우 slave=yes

mariabackup을 이용한 일일백업

if [ ! -d $dst/0 ]; then
    #최초 백업이라면..
    if [[ $slave == "yes" ]]; then
            $xbk --backup --slave-info --target-dir ${dst}/0 --user ${user} --password ${password}
    else
            $xbk --backup --no-lock --target-dir ${dst}/0 --user ${user} --password ${password}
    fi

BACKUP 디렉토리에 0 디렉토리가 존재하지 않는다면, 최초 백업으로 간주한다.

mariabackup을 이용한 증분백업

else
    #최초 백업이 완료되었고, 증분을 수행해야할 경우
    if [[ $slave == "yes" ]]; then
        $xbk --backup --slave-info --target-dir ${dst}/1 --incremental-basedir ${dst}/0 --user ${user} --password ${password}
        if [[ -d ${incdir}/$date ]]; then
                rm -rf ${incdir}/$date
        else
                cp -rf ${dst}/1 ${incdir}/$date
        fi
    else
        $xbk --backup --no-lock --target-dir ${dst}/1 --incremental-basedir ${dst}/0 --user ${user} --password ${password}
        if [[ -d ${incdir}/$date ]]; then
                rm -rf ${incdir}/$date
        else
                cp -rf ${dst}/1 ${incdir}/$date
        fi
    fi

    #매일 백업된 전체백업의 준비를 한다. 만약 이 과정을 무시하면, 다음의 에러가 발생된다.
    #error: applying incremental backup needs a prepared target.
    $xbk --prepare --target-dir ${dst}/0

    #위의 준비가 완료되었으면, 실제로 매일 백업된 증분백업을 전체백업으로 합친다.
    $xbk --prepare --target-dir ${dst}/0 --incremental-dir ${dst}/1 --user ${user} --password ${password}
    #이 과정은 전체백업에 대한 부분이므로, 증분백업된 내역은 제거한다.
    rm -rf ${dst}/1
fi

- 지정된 날짜가 지난 증분백업 제거

find $incdir/ -ctime +${inc} -exec rm -rf {} \;

!참고 : 대상이 되는 디렉토리는 /BACKUP/$service/INC/ 이다.

Backup DATA Review

- 전체 백업

# ls -al /BACKUP/HONGSNET/FULL/0/
total 143532
drwx------ 12 root root      4096 Mar  2 01:03 .
drwxr-xr-x  3 root root        15 Mar  2 01:03 ..
-rw-r-----  1 root root     32768 Mar  2 01:03 aria_log.00000001
-rw-r-----  1 root root        52 Mar  2 01:03 aria_log_control
-rw-r-----  1 root root       324 Dec 12 00:44 backup-my.cnf
drwx------  2 root root      8192 Mar  2 01:03 edu
drwx------  2 root root      8192 Mar  2 01:03 hjh
-rw-r-----  1 root root     23455 Dec 12 00:44 ib_buffer_pool
-rw-r-----  1 root root 146800640 Mar  2 01:03 ibdata1
-rw-r-----  1 root root         0 Dec 14 03:20 ib_logfile0
drwx------  2 root root      4096 Mar  2 01:03 ldswork
drwxr-x---  2 root root      8192 Mar  2 01:03 MATTERMOST
drwx------  2 root root      4096 Mar  2 01:03 mysql
drwx------  2 root root     16384 Mar  2 01:03 newhongsystem
drwx------  2 root root        20 Mar  2 01:03 performance_schema
drwx------  2 root root      8192 Mar  2 01:03 tech
drwx------  2 root root        28 Mar  2 01:03 test
-rw-r-----  1 root root        41 Mar  2 01:03 xtrabackup_binlog_info
-rw-r-----  1 root root        85 Mar  2 01:03 xtrabackup_checkpoints
-rw-r-----  1 root root       644 Mar  2 01:03 xtrabackup_info
drwxr-x---  2 root root     12288 Mar  2 01:03 ZABBIXDB

- 증분 백업

# ls -al /BACKUP/HONGSNET/INC/
total 128
drwxr-xr-x 33 root root 4096 Mar  2 01:03 .
drwxr-xr-x  4 root root   47 Jan 16 05:17 ..
drwx------ 12 root root 4096 Jan 31 01:01 2021-01-31
drwx------ 12 root root 4096 Feb  1 01:01 2021-02-01
drwx------ 12 root root 4096 Feb  2 01:01 2021-02-02
drwx------ 12 root root 4096 Feb  3 01:01 2021-02-03
drwx------ 12 root root 4096 Feb  4 01:01 2021-02-04
drwx------ 12 root root 4096 Feb  5 01:01 2021-02-05
drwx------ 12 root root 4096 Feb  6 01:01 2021-02-06
drwx------ 12 root root 4096 Feb  7 01:01 2021-02-07
drwx------ 12 root root 4096 Feb  8 01:00 2021-02-08
...하략

아래는 특정 일자에 대한 세부적인 확인결과 이다.

# ls -al /BACKUP/HONGSNET/INC/2021-02-25/
total 18924
drwx------ 12 root root     4096 Feb 25 01:02 .
drwxr-xr-x 33 root root     4096 Mar  2 01:03 ..
-rw-r-----  1 root root    32768 Feb 25 01:02 aria_log.00000001
-rw-r-----  1 root root       52 Feb 25 01:02 aria_log_control
-rw-r-----  1 root root      324 Feb 25 01:02 backup-my.cnf
drwx------  2 root root    12288 Feb 25 01:01 edu
drwx------  2 root root    12288 Feb 25 01:01 hjh
-rw-r-----  1 root root  1268090 Feb 25 01:02 ib_buffer_pool
-rw-r-----  1 root root 16515072 Feb 25 01:01 ibdata1.delta
-rw-r-----  1 root root       45 Feb 25 01:01 ibdata1.meta
-rw-r-----  1 root root  1381888 Feb 25 01:01 ib_logfile0
drwx------  2 root root     8192 Feb 25 01:01 ldswork
drwx------  2 root root    16384 Feb 25 01:02 MATTERMOST
drwx------  2 root root     4096 Feb 25 01:01 mysql
drwx------  2 root root    24576 Feb 25 01:01 newhongsystem
drwx------  2 root root       20 Feb 25 01:02 performance_schema
drwx------  2 root root     8192 Feb 25 01:01 tech
drwx------  2 root root       20 Feb 25 01:02 test
-rw-r-----  1 root root       42 Feb 25 01:02 xtrabackup_binlog_info
-rw-r-----  1 root root       96 Feb 25 01:02 xtrabackup_checkpoints
-rw-r-----  1 root root      645 Feb 25 01:02 xtrabackup_info
drwx------  2 root root    16384 Feb 25 01:02 ZABBIXDB