본문 바로가기

Academy I/Tech Academy

MySQL/MariaDB 백업 자동화

작업을 시작하기전


$sudo su


명령어를 이용하여 root권한을 가져야한다.

1 . mysqldump를 이용한 논리적 백업

- ubuntu환경에서 mysqldump 명령어를 이용해 데이터베이스를 백업시킬 수 있다.


1) 모든 데이터베이스를 백업.

 $mysqldump -uroot -p[비밀번호] -A > /경로/파일이름.sql


2) 특정 데이터 베이스 백업.

 $mysqldump -uroot -p[비밀번호] 테이블명 > /경로/파일이름.sql


위 방법을 이용하면 데이터베이스의 스키마는 백업되지않고 그 데이터베이스의 내용만 sql로 백업된다.

(orm을 사용하여 코드상에 스키마가 존재하는경우  이방법으로도 충분하다고 생각.)

(현재 사용 중인 Django 프로젝트에서는 데이터베이스의 마이그레이션이 orm을 통해 쉽기 때문에 위의 방법으로 백업 중이다.)

스키마를 백업하는 방법이나 기타 다른 백업 내용을 백업하고 싶을 시에는

$mysqldump -?

명령어로 확인하면 되고(사실 뭔소린지 보기어렵다.) 구글에 검색하면 쭉쭉 잘 나온다.



2. 셸 스크립트 작성

- 1번의 백업 명령어를 대신해줄 셸 스크립트 작성


1) 스크립트를 작성 (작성할 위치로 이동)

 $vim 스크립트파일명.sh


※아래 내용을 그대로 작성해 주면된다!

 #!/bin/bash
 mysqldump -uroot -p[비밀번호] 테이블명 > /경로/파일이름.`date +%Y%m%d%H%M%S`.sql
 find /sql백업파일의경로/ -type f -mtime +10 | sort | xargs rm -f


= > 두번째 줄은 1번 내용의 명령어를 작성해 놓은것이고, 세번째 줄은 데이터베이스의 백업 sql파일이 10일이 지난 파일일 경우 삭제한다는 명령어이다.

      (+10 부분으로 삭제 기간을 정할 수 있다.)


2) 스크립트의 실행권한을 설정해준다.(아래명령어)

$chmod 700 스크립트파일명.sh​ 


3. crontab 설정 (crontab에 대한 자세한 내용 - http://blog.naver.com/kingwjdduq/220524269222)

 - 2번에서 작성한 백업 스크립트를 스케줄링으로 자동화시킬 crontab 설정


1) crontab 설정 작업

 $crontab -e


 아래 내용을 그래도 작성

 0 4 * * * /스크립트파일의경로/스크립트파일명.sh


=> 위 내용은 매일 오전 4시에 백업 내용을 작성해 둔 스크립트파일을 실시하겠다고 설정해준 내용이다.