본문 바로가기
개발/Linux

[Linux] MySQL DB 백업 스크립트 - 자동으로 백업하기

by zuzuu 2021. 12. 17.
반응형

데이터베이스의 데이터를 자동으로 백업할 수 있도록 스크립트를 작성했다.

#! /bin/bash 
# backup directory
dir=$(echo /home1/test01/project01/db/backup)

# get backup file time and now time
customer_BackupFileDate=$(date -r $dir/backup_customer.sql '+%Y-%m-%d %H:%M:%S')
customer_BackupFileDateString=$(date -r $dir/backup_customer.sql '+%Y%m%d_%H%M%S')

# rename last backup file
mv $dir/backup_customer.sql $dir/backup_customer_$customer_BackupFileDateString.sql

# backup customer table from test01
sudo /home1/test01/db/mysql/bin/mysqldump -utest01 -p1q2w3e4r -S /home1/test01/db/mysql/tmp/mysql.sock test01 customer --where="create_date > '$customer_BackupFileDate'" --skip-add-drop-table > $dir/backup_customer.sql
sudo chown test01:test01 $dir/backup_customer.sql

해당 스크립트를 리눅스 작업 스케줄러(crontab)에 등록하여 반복적으로 실행되게 하면 된다.

본인은 직전에 백업된 파일이 생성된 일자 이후로 등록된 customer 정보만 백업하고자 위와 같이 작성했는데 전체 데이터를 다 백업하고자 한다면 where 절을 제거하고 사용하면 된다!

스트립트의 내용을 설명해보자면

# get backup file time and now time

: 기존에 생성된 백업파일이 생성된 시간을 획득하였다. 하나는 date 타입이고 하나는 string 타입인데 date 타입은 where절에 조건을 주기 위함이고, string 타입은 기존 백업파일의 파일명을 바꿔주기 위함이다.

# rename last backup file

: 마지막으로 생성된 백업파일의 파일명을 변경하였다. ( 위에서 획득한 string 타입의 일자 붙여줌)

# backup customer table from test01

: test01 데이터베이스의 customer 테이블의 데이터를 dump하기 위한 과정이다.

 

 

아래와 같이 상황에 따라 수정해서 사용하면 될듯!

  • 전체 백업
    mysqldump -u계정아이디 -p계정패스워드 -A > all.sql

 

  • 특정 DB 백업
    mysqldump -u계정아이디 -p계정패스워드 DB명 > DB명.sql

 

  • 특정 DB의 특정 테이블 백업
    mysqldump --u계정아이디 -p계정패스워드 DB명 table명 > DB명_table명.sql

 

 

 

728x90
반응형

댓글