- Docker MariaDB 전체 데이터베이스 백업 스크립트
- systemd.timer 사용
- 실행환경
- OS : AWS EC2 Amazon Linux 2023
- DB : 11.4.2-MariaDB
1. root 폴더내 db-backup.sh 작성
sudo vi /root/db-backup.sh
#!/bin/bash
# Docker MariaDB 용 DB Backup Shellscript
# 날짜 형식 설정
now=$(date +"%Y%m%d")
delday=$(date --date '5 days ago' +"%Y%m%d")
# 백업 및 로그 경로 설정
backupdir="/home/ec2-user/apps/db-backup"
log="${backupdir}/logs/${now}.log"
# MariaDB 접속정보 설정
user="접속유저"
password="접속유저 패스워드"
# Docker Compose Container Name
containername="mariadb"
# 백업 및 로그 디렉토리 생성
mkdir -p "${backupdir}"
mkdir -p "${backupdir}/logs"
# 5일전 백업 된 파일 삭제
echo "[$(date +"%Y-%m-%d %H:%M:%S")] delete backup sql start" >> $log
sudo find "${backupdir}" -name "db_backup_${delday}.*" -type f -exec rm -f {} \;
echo "[$(date +"%Y-%m-%d %H:%M:%S")] delete backup sql end" >> $log
# 데이터베이스 백업
echo "[$(date +"%Y-%m-%d %H:%M:%S")] database backup sql start" >> $log
cd /home/ec2-user
sudo docker compose exec -T ${containername} mariadb-dump -u${user} -p${password} --all-databases > "${backupdir}/db_backup_${now}.sql"
if [ $? -eq 0 ]; then
echo "[$(date +"%Y-%m-%d %H:%M:%S")] database backup completed successfully" >> $log
gzip "${backupdir}/db_backup_${now}.sql"
echo "[$(date +"%Y-%m-%d %H:%M:%S")] database backup file compressed" >> $log
else
echo "[$(date +"%Y-%m-%d %H:%M:%S")] database backup failed" >> $log
fi
echo "[$(date +"%Y-%m-%d %H:%M:%S")] database backup sql end" >> $log
sudo chmod 711 /root/db-backup.sh
1-1. SELinux 활성화시 Context 설정
sudo chcon -t bin_t /root/db-backup.sh
2. db-backup.timer 작성
sudo vi /etc/systemd/system/db-backup.timer
[Unit]
Description=Mariadb Backup Timer
[Timer]
# 시:분:초
# *:0:0 - 매 1시간마다 0분 0초에 실행
# *:*:0 - 매 1분마다 0초에 실행
# 4:0:0 - 매일 새벽 4시에 실행
OnCalendar=4:0:0
# Server 시작시 실행
Persistent=true
# Target Service
Unit=db-backup.service
[Install]
WantedBy=multi-user.target
3. db-backup.service 작성
sudo vi /etc/systemd/system/db-backup.service
[Unit]
Description=Mariadb Backup Service
[Service]
# 실행할 쉘 지정
ExecStart=/root/db-backup.sh
4. systemd 서비스 자동시작 설정 및 시작
sudo systemctl enable db-backup.timer
sudo systemctl start db-backup.timer
5. timer list 확인
sudo systemctl list-timers
6. timer service 확인
sudo systemctl status db-backup.timer
7. DB 백업 결과 확인
ll /home/ec2-user/apps/db-backup
'PPWs DevOps' 카테고리의 다른 글
MariaDB - MariaDB 백업 스크립트 (Systemd.timer) (0) | 2024.08.24 |
---|---|
Docker Gitlab - AWS SES SMTP 연동 (0) | 2024.08.20 |
사내 통합 개발 환경 구축기 (1) 통합 개발 도구 선정 (1) | 2024.08.14 |