MySQL DB 자동 백업

kdobro_dev·2024년 1월 16일
0

TIL (Today I Learned)

목록 보기
56/56

MySQL DB 자동 백업에 대해서 알아보자.

- 백업 폴더 생성하기

# 백업 파일을 관리하고 싶은 경로에서 폴더 생성
# 경로 => Desktop

mkdir backup

- sh 백업 파일 생성하기

# sh 파일 생성
# 경로 => Desktop/backup

touch backup.sh

- 생성한 sh파일에 vim으로 editor모드로 접속

# script 추가 
# 경로 => Descktop/backup/backup.sh

sudo vim backup.sh

- sh파일에 실행 권한 주기

chmod +x backup.sh

- sh파일에 스크립트 추가하기

#!/bin/sh

# MySQL Database
# 데이터베이스 INFO
DB_USER="DB 유저 아이디"
DB_PASSWORD="DB 유저 패스워드"
DB_NAME="DB 스키마 이름"

# Backup Path
# 백업파일 보관할 경로
BACKUP_DIR="/Descktop/backup"

# Date
# 날짜 지정
DATE=$(date +"%Y%m%d%H%M%S")

# Backup File
# 백업파일 이름 지정 
BACKUP_FILE="$BACKUP_DIR/$DB_NAME.backup_$DATE.sql.gz"

# MySQL dump 
# mysqldump 명령어
/usr/bin/mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_FILE

여기까지가 DB 백업 파일을 생성하는 단계이다.

다음은 crontab을 이용하여 주기적으로 기간을 지정해서 자동으로 백업 파일을 생성 할 수 있게 적용해보자.

crontab은 어떤 경로에서 접속해도 상관 없어 보인다.

- crontab editor모드에 접속하기

# crontab editor모드 접속
EDITOR=vim crontab -e

- 원하는 기간을 지정해서 위에 생성한 sh파일 실행시키기

# Run everytime 3:00am
# 매일 새벽 3시에 실행되도록 설정하였다.
0 3 * * * /Descktop/backup/backup.sh

# 1분에 한번 씩 실행되도록 설정하고 정상적으로 백업 파일이 만들어지는지 확인
*/1 * * * * /Descktop/backup/backup.sh

이번엔 백업 파일이 쌓이는 것을 방지하기 위해 자동 삭제 script도 추가해보자.

- sh 삭제 파일 생성하기

# sh 파일 생성
# 경로 => Desktop/backup

touch delete.sh

- 생성한 sh파일에 vim으로 editor모드로 접속

# script 추가 
# 경로 => Descktop/backup/delete.sh

sudo vim delete.sh

- sh파일에 실행 권한 주기

chmod +x delete.sh

- sh파일에 스크립트 추가하기

#!/bin/sh

# Delete Backup File
# 7일 전보다 과거 / 일주일치만 모아두기
find /DATA/mysql_backup/*.sql.gz -mtime +7 -exec rm -f {} \;

스크립트 추가 후 crontab에 언제 이 스크립트 파일을 실행 할 지 정해준다.

# Run everytime 4:00am
# 매일 새벽 4시에 실행되도록 설정하였다.
0 4 * * * /Descktop/backup/delete.sh

# 1분에 한번 씩 실행되도록 설정하고 정상적으로 백업 파일이 만들어지는지 확인
*/1 * * * * /Descktop/backup/delete.sh
profile
do your best at any moment

0개의 댓글