개발노트
목록

[자동백업] Rocky Linux 9 + Maria DB : 백업 및 3일 이전 데이터만 보관 하기

crontab DB백업 Rotation Backup
Server 2025.05.07 12 회 읽음
Server 5일 전 12


여기에서는 예시로 새벽 3시 1분에 자동 백업이 되도록 합니다.

3일치 로테이션 백업을 cron으로 자동화 하려고 하며 필요에 따라서는 7일과 같이 수정해서 사용할 수 있습니다.


1. 백업 스크립트 생성 (backup_mariadb.sh)

백업 스크립트를 생성하기 위해서는 자동 실행하는 스크립트 파일 .sh 를 먼저 만들어야 합니다.

텍스트 편집기는 vi, nano, vim 등을 사용하며 /home/backup 디렉토리에 backup_mariadb.sh 파일을 생성 해 보겠습니다.


#!/bin/bash
# 백업 디렉토리
BACKUP_DIR="/home/backup"
# MariaDB 접속 정보 (보안을 위해 환경 변수 또는 별도 설정 파일에서 관리하는 것을 권장합니다.)
DB_USER="your_mariadb_user"
DB_PASSWORD="your_mariadb_password"
DB_NAME="your_database_name"
DB_HOST="localhost" # 필요에 따라 변경
# 백업 파일명 형식 (날짜 포함)
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_$(date +'%Y%m%d').sql.gz"
# mysqldump 실행 (gzip으로 압축)
mysqldump -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" | gzip > "$BACKUP_FILE"
# 백업 성공 메시지 (선택 사항)
echo "MariaDB 백업 완료: $BACKUP_FILE"
# 3일 이전 백업 파일 삭제
find "$BACKUP_DIR" -name "${DB_NAME}_*.sql.gz" -type f -mtime +3 -delete
# 삭제 완료 메시지 (선택 사항)
echo "3일 이전 백업 파일 삭제 완료."
exit 0



2. 스크립트에 실행 권한 부여

작성한 스크립트에 실행 권한을 부여해야 cron에서 실행할 수 있습니다. 터미널에서 다음 명령어를 실행하세요.

chmod +x /home/backup/backup_mariadb.sh



3. crontab 일정 설정

이제 cron에 작업을 등록하여 매일 새벽 3시 1분에 스크립트가 자동으로 실행되도록 설정합니다.

crontab -e
01 03 * * * /home/backup/backup_mariadb.sh



4. crontab 확인

설정이 제대로 되었는지 확인하려면 다음 명령어를 실행합니다.

# crontab -l
01 03 * * * /home/backup/backup_mariadb.sh



5. 테스트로 실행 해 보기
해당 /home/backup/ 디렉토리로 이동하고 생성한 스크립트를 ./backup_mariadb.sh 실행하면 결과를 확인할 수 있습니다.

cd /home/backup/
./backup_mariadb.sh
MariaDB 백업 완료: /home/backup/dut_20250507.sql.gz
3일 이전 백업 파일 삭제 완료.
ls -la
total 432
drwxr-xr-x  3 root root     69 May  7 20:59 .
drwxr-xr-x. 5 root root     71 May  1 21:13 ..
-rwxr-xr-x  1 root root    821 May  7 20:58 backup_mariadb.sh
-rw-r--r--  1 root root 435966 May  7 20:59 dut_20250507.sql.gz

Rocky Linux9 버전에 MariaDB 10.5.27 버전을 사용하는 리눅스 서버에서 자동으로 백업하는 스크립트를 작성 해 보았습니다.
기간은 스크립트를 작성할 때 자유롭게 지정이 가능하지만 저장 공간이 여유롭지 않다면 짧게 지정하는 것을 권장합니다.

일일 백업이 필요한 이유는? 실수로 데이터를 삭제한 경우 1일 전 데이터로 복구가 가능하기 때문 입니다. 서버를 운영하다 보면 사람이다 보니 실수를 하는 경우가 생길 수가 있습니다.
중요한 데이터라면 별도의 서버에 원격지 백업을 하는 것도 좋습니다.

여기에서는 crontab을 이용하여 스크립트를 실행하여 백업할 수 있도록 하였습니다.
목록