-
[Database] Linux-Docker-Mysql 데이터베이스 자동 백업Database 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
'Database' 카테고리의 다른 글
[MySQL] 문자 형식 변경 방법(utf8_general_ci) (0) 2021.10.01 [Database] 문자열 합치기 (CONCAT, GROUP_CONCAT) (0) 2020.07.09 [Database] UTC 시간 기준으로 쿼리 값 입력하기 (0) 2020.02.03 [Database] 쿼리문 ( 작성중.... ) (0) 2019.05.09