SQL) 백업 스크립트

박우영·2023년 6월 9일
0

DB

목록 보기
2/6

크론탭으로 주기적으로 스크립트 자동으로 돌아가도록 설정

#!/bin/bash

DB_BACKUP="/var/lib/mysql/mysqlbackup/"  # 백업 파일들이 저장될 경로를 정의
DB_USER="root"
#DB_PASSWD="passwd"

# full backup
#mysqldump --single-transaction --hex-blob --user="$DB_USER" -A | gzip > "$DB_BACKUP/mysqldump-$(date +%Y-%m-%d).gz";

# Check if DB_PASSWD is set or not
if [ -n "$DB_PASSWD" ]; then
  # Backup all databases with the root user password specified
  mysqldump --single-transaction --hex-blob --user="$DB_USER" --password="$DB_PASSWD" -A | gzip > "$DB_BACKUP/mysqldump-$(date +%Y-%m-%d).gz";
else
  # Backup all databases with the root user password not specified
  mysqldump --single-transaction --hex-blob --user="$DB_USER" -A | gzip > "$DB_BACKUP/mysqldump-$(date +%Y-%m-%d).gz";
fi



# Check if today's backup was successful
if [ $? -eq 0 ]; then
  echo "Backup successful."
  # Delete backup files older than 7 days
  find "$DB_BACKUP" -name "mysqldump-*.gz" -type f -mtime +6 -exec rm {} \;
else
  echo "Backup failed. No files will be deleted."
fi
  1. 첫번째 if 문은 DB_PASSWD가 설정되어 있는지 확인하고, 설정되어 있다면 비밀번호를 사용하여 모든 데이터베이스를 백업합니다. 비밀번호가 설정되어 있지 않다면 비밀번호 없이 백업을 수행합니다. 이 때, mysqldump 명령어는 MySQL 데이터베이스의 내용을 덤프하며, gzip 명령어는 덤프 내용을 압축합니다.

  2. 백업 작업 후에는 백업이 성공적으로 이루어졌는지 확인합니다. 이를 위해 이전 명령의 종료 상태 코드를 확인합니다. 종료 상태 코드가 0이면 명령이 성공적으로 수행된 것입니다.

  3. 백업이 성공하면, find 명령어를 사용하여 7일 이상된 백업 파일을 찾아 삭제합니다. find 명령의 -mtime +6 옵션은 6일보다 더 오래된 파일을 찾는다는 의미입니다.

  4. 만약 백업 작업이 실패하면, 오래된 백업 파일은 삭제되지 않습니다. 실패 메시지를 출력합니다.

0개의 댓글