DB Mysql의 데이터를 편리하게 백업하고 롤백시킬 수 있는 기능인 mysqldump을 사용해보자
→ sudo su
/data/mysql_backup/
- backup_files/
- shell_script/
db_backup.sh
#!/bin/bash
# 1. 변수설정
BAK_FILE_SAVE_PATH=/data/mysql_backup/database_backup_files # 백업파일과 로그파일이 저장되는 폴더
BAK_FILE_DIRECTORY=`date +"%Y%m%d"`
BAK_FILE_NM=_db_backup_`date +"%Y%m%d"`.sql # 백업파일명 (%Y%m%d는 실행되는 날짜)
BAK_LOG_FILE_NM=_db_backup_`date +"%Y%m%d"`.log # 백업 로그파일명
WEEK_AGO=`date -d '1 week ago' +"%Y%m%d"` # 1주전 백업파일을 지우는데, 1주일전 년월일을 저장하는 변수
#ThreeDays_AGO = `date -d '3 days' +"%Y%m%d"`
MYSQL_HOST='mysql host number'
MYSQL_USER='mysql username'
MYSQL_PASSWORD='mysql password'
S3_SYNC_URL="s3://s3 주소"
# 2. 폴더만들기
mkdir ${BAK_FILE_SAVE_PATH}/${BAK_FILE_DIRECTORY}
# 3. 백업 및 로그 저장
# 백업 시작 로그 저장
echo `date +"%Y-%m-%d %H:%M:%S"`" <<< Database backup shell script start!>>>" >> ${BAK_FILE_SAVE_PATH}/${BAK_FILE_DIRECTORY}/${BAK_LOG_FILE_NM}
# 백업 파일 저장
sudo mysqldump -u${MYSQL_HOST} -p${MYSQL_PASSWORD} -A > ${BAK_FILE_SAVE_PATH}/${BAK_FILE_DIRECTORY}/${BAK_FILE_NM}
# 백업 종료 로그 저장
echo `date +"%Y-%m-%d %H:%M:%S"`" <<< Database backup shell script end!>>>" >> ${BAK_FILE_SAVE_PATH}/${BAK_FILE_DIRECTORY}/${BAK_LOG_FILE_NM}
# 엔터
echo "" >> ${BAK_FILE_SAVE_PATH}/${BAK_FILE_DIRECTORY}/${BAK_LOG_FILE_NM}
echo done
# 4. S3에 파일 업로드
aws s3 cp ${BAK_FILE_SAVE_PATH}/${BAK_FILE_DIRECTORY}/${BAK_FILE_NM} $S3_SYNC_URL
# 5. 일주일 지나면 폴더 삭제
rm -rf $BAK_FILE_SAVE_PATH/$WEEK_AGO
AWS IAM 사용자 생성
EC2로 다시 접속 → aws configure
다시 shell script의 db_backup.sh
파일 열고, S3 버킷 url과 보낼 파일 경로 적어 업로드(위에 적혀있음)
crontab -e
# 열리는 파일에 아래와 같이 붙여넣기
# 분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)
0 2 * * * /data/mysql_backup/shell_script/db_backup.sh # Run Daily 2AM
만약 현재 크론탭에 어떤 내용이 들어있는지 보려면 crontab -l
확인하기!!