Database
[Database] Linux-Docker-Mysql 데이터베이스 자동 백업
전자기린
2021. 11. 29. 15:31
backup/database에 주기적으로 백업 데이터를 저장하는 방법 입니다.
해당 글은 백업 스크립트는 backup 폴더에 생성하는 것을 기준으로 하고 있습니다.
1. 폴더를 생성합니다. (스크립트 보관 및 백업데이터 보관용)
# 경로 생성
mkdir /backup
mkdir /backup/database
2. 스크립트 생성
# 스크립트를 생성합니다.
vi /backup/backup_db.sh
# 생성 후 i를 눌러 데이터를 입력합시다. (아래 코드(2.1) 붙여 넣기(마우스 우클릭))
# 입력 후에 ESC를 누르고 :wq를 입력하고 빠져나옵니다.
2.1
#!/bin/sh
echo "============= 20일 지난 데이터 삭제 시작 ============="
# 20일이 지난건 지워버림
DEL_FILE=`date -d "-20 days" +%Y%m%d`
rm -rf /backup/database/mysql_db_bak_${DEL_FILE}.sql
echo "============= 20일 지난 데이터 삭제 완료 ============="
echo "============= 변수 할당 시작 ============="
DATE=`date +"%Y%m%d"`
USER="DB접속 계정"
PASSWORD="DB접속 암호"
DATABASE="데이터베이스 명"
CONTAINER="Docker mysql 컨테이너 명"
OUTPUT_PATH="/backup/database/mysql_bak_${DATABASE}_${DATE}.sql"
echo "============= 변수 할당 완료 ============="
echo "============= Database 백업 시작 ============="
docker exec ${CONTAINER} /usr/bin/mysqldump -u${USER} -p${PASSWORD} ${DATABASE} > ${OUTPUT_PATH}
chown root.root ${OUTPUT_PATH}
chmod 755 ${OUTPUT_PATH}
echo "============= Database 백업 완료 ============="
3. crontab를 사용하여 특정 시간에 스크립트 자동 실행
# 설정 열기
crontab -e
4. 반복 시간(분, 시, 월, 일, 요일) 및 반복 파일 설정
분(0~59), 시(0~23), 일(1~31), 월(1~12), 요일(0~7 : 0,7은 일요일)
명령어는 무조건 한줄로 입력!, 줄 바꿈으로 여러 명령어 설정 가능
00 02 * * * bash /backup/backup_db.sh
# 생성 후 i를 눌러 데이터를 입력합시다. (아래 코드(2.1) 붙여 넣기(마우스 우클릭))
# 입력 후에 ESC를 누르고 :wq를 입력하고 빠져나옵니다.
5. 수정 사항 적용
service crond restart
6. 반영 결과 확인
crontab -l