본문 바로가기

도구의발견

MySQL 백업 스크립트

아래 쉘 스크립트를 crontab등에 등록 해두고 매일매일 실행 시키면 4일 까지의 덤프 데이터가 남는다.

#!/bin/sh
BACKUP_DIR=/home/SOMEWHERE/db_backup
TODAY=`date +%Y%m%d`
RETENTION_PERIOD=4  # 백업 덤프 파일 보관 기간 4일

DAY_BEFORE_RETENTION_PERIOD=`date --date "${RETENTION_PERIOD} day ago" +%Y%m%d`

#echo "DAY_BEFORE_RETENTION_PERIOD:"${DAY_BEFORE_RETENTION_PERIOD}

#유저가 작성한 DB 목록 추출
mysql -u root -h 127.0.0.1 -P 3306 --password='PASSWORD' --skip-column-names -e "select schema_name from information_schema.schemata where schema_name not in ('information_schema','mysql','performance_schema')" > ${BACKUP_DIR}/backup_schema_list.${TODAY}

for db_schema in `cat ${BACKUP_DIR}/backup_schema_list.$TODAY | awk '{print $1}'`
do
        backup_schema_list=${backup_schema_list}" "${db_schema}
done

# 백업 파일 덤프
mysqldump -u root --password='PASSWORD' --master-data=2 --routines --events --single-transaction --databases ${backup_schema_list} > ${BACKUP_DIR}/tk_db_backup.${TODAY}.sql

rm -f ${BACKUP_DIR}/tk_db_backup.${DAY_BEFORE_RETENTION_PERIOD}.sql

부록 1. 같이 읽으면 좋은 글

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!