데이터베이스(mysql,mariadb) 자동백업 스케쥴(cron) 및 압축 그리고 ftp 전송

서버를 운영하게되면 가장 중요한 부분이 하드웨어 문제가 발생할시 빠른 복구를 통한 서비스(Service) 재게일 것이다.

클라우드 서버를 이용하게 되면 그러한 일들이 발생할 경우가 거의 없겠으나,

여러가지 이유로 자체서버를 유지해야 할 경우엔 물리적인 장비의 고장시 대처가 필요하게되고 이러한 이유로 데이터

소스파일 및 데이터베이스의 백업은 중요하다 하겠다.


데이터 베이스의 백업
 
1. sql 데이터 백업


첫번째로 해야할일은 데이터 백업을 실행하게된 스크립트 화일의 생성이다

$ vi /home/shell/dbbackup.sh

에디터로 파일을 생성하고 아래와 같이 작성하고 접속계정등 일부 수정하고

저장한다 wq
 
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR=/home/backup/

delete_date="+15" # 6일이 지난 백업본 삭제
### 예전 자료 삭제 ###
find $BACKUP_DIR*.tar.gz -mtime $delete_date -print -exec rm -rf {} ;

### 데이터 백업 ###
mysqldump -u유저 -p비번 데이터베이스명  > $BACKUP_DIR"backup_"$DATE.sql

### 압축파일명 ###
fn1="blog_backup_$(date +%Y-%m-%d).database.tar.gz"


#sleep 30s
### 백업파일 압축 ###
tar cvfz ${BACKUP_DIR}/$fn1  /home/backup/backup_${DATE}.sql

데이터베이스(mysql,mariadb) 자동백업 스케쥴(cron) 및 압축 그리고 ftp 전송

$ chmod 755 /home/shell/dbbackup.sh

저장한 파일은 실행이 가능한 파일로 퍼미션 조정을 해준다.

 
2. 실행확인


이렇게 작업된 파일을 실행하여 백업될 폴더에 해당명의 sql 파일과 tar.gz 파일이 생성

이 되는지 확인하자 

데이터베이스(mysql,mariadb) 자동백업 스케쥴(cron) 및 압축 그리고 ftp 전송

 
3. 생성된 스크립트 파일의 스케쥴 작업

데이터베이스(mysql,mariadb) 자동백업 스케쥴(cron) 및 압축 그리고 ftp 전송

$ crontab -e

매일 저녁 11시 30분 지정된 폴더에 백업되도록 설정하였고, 파일의 중요도 및 필요에따라

스케쥴은 조정하여 백업을 진행한다
 
4. 백업된 파일 ftp 전송


외부의 백업파일저장 전용 서버를 만들고 해당 서버에서  백업된 파일을 스케쥴에 맞게 가져오는 

쉡스크립트 파일을 생성하고 cron 등록하자

데이터베이스(mysql,mariadb) 자동백업 스케쥴(cron) 및 압축 그리고 ftp 전송
 
#! /bin/sh


now=$(date +"%Y%m%d")

BACKUP_DIR=/home/backup/


ftp -vn << EOF
open 도메인,ip
user 유저 패스워드
binary
promp off
cd /home/backup
get backup_$now.database.tar.gz /home/backup/backup_$now.database.tar.gz

bye
EOF











 

hit: 4

0 Comments

    Leave a comment