본문 바로가기

Database/MySQL

MySQL(MariaDB) DUMP과 cron으로 DB 이중화, 백업하기 :: DANIDANI

MySQL dump를 이용한 방법으로 DB를 백업해봅시다!

A서버는 본 DB서버이고, B서버는 백업 DB 서버입니다.

A서버에서 dump파일을 생성한 후 cron작업으로 매일 일정 시간이 되면

B서버에 dump파일을 전송하고, B서버에서 이를 실행시키는 작업을 해보겠습니다.


1. A 서버

DUMP 쉘스크립트 파일 생성

vi backup_db.sh
#!/bin/sh

## yyyy-mm-dd_hh:mm format
TIME=$(date "+%Y-%m-%d-%H")

mysqldump -u (계정명 default는 root) -p(비밀번호) -A > DUMP_${TIME}.sql
scp ${HOME}/DUMP_${TIME}.sql 계정이름@ip주소:저장할 디렉터리 경로

ssh 포트를 바꾼 경우 scp -P 포트번호 ~~~~

스크립트 실행 시 B서버에 비밀번호가 걸려있는 등의 문제가 생기면 다음 포스팅을 참고하세요!

쉘스크립트 파일 실행 권한 주기

chmod +x backup_db.sh

매일 3시에 쉘스크립트 파일 실행 -cron 이용

crontab -e * 3 * * * ${HOME}/backup_db.sh

 


2. B서버

Import 쉘 스크립트 작성

vi import_db.sh 
#!/bin/sh

## yyyy-mm-dd_hh:mm format
TIME=$(date "+%Y-%m-%d-%H")

mysql -u(계정명 default는 root) -p(비밀번호) < DUMP_${TIME}.sql

쉘스크립트 파일 실행 권한 주기

chmod +x backup_db.sh

매일 3시 5분에 쉘스크립트 파일 실행 -cron 이용

crontab -e 5 3 * * * ${HOME}/import_db.sh

 


<번외>

cron이 실행 될 때마다 메일이 옴. 메일이 계속 쌓이면 메모리 차지 - email 안오게 하는 법

vi /etc/crontab MAILTO=root -> MAILTO="" 변경
  1. clone서버 keypair 없이 접속하게 한 다음에, scp로 파일 전송
  2. aws 디렉터리 snapshot 기능 찾아보기

 

서버 시간 맞추기

sudo mv /etc/localtime /etc/localtime_org sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

cron시간이 제대로 작동되지 않을 경우 재시작

sudo /etc/init.d/crond restart

 

 

 

728x90