Linux

[Ubuntu] MySQL 자동 백업 설정

잔망루피 2024. 7. 23. 15:29

🧀 폴더 생성 및 권한 수정

  • 755는 앞자리 수부터 사용자, 그룹, 다른 사용자를 의미한다.
  • 7은 사용자에게 읽기(r), 쓰기(w), 실행(x) 권한을 준다.
  • 그룹과 다른 사용자에게는 읽기(r), 실행(x) 권한을 준다.

폴더의 권한을 수정 한 후

mkdir db_backup
chmod 755 db_backup

 

d r w x r - x r - x
디렉토리 읽기(4) 쓰기(2) 실행(1) 읽기(4) 0 실행(1) 읽기(4) 0 실행(1)

 

 

 

🍍 스크립트 파일 생성 및 작성

  • 백업 파일명은 년도, 달, 일, 시, 분, 초가 들어가게 했다.
  • 위에서 생성한 폴더 아래에 백업된 파일이 생성된다.
  • 백업 파일이 생성된지 14일이 지나면 그 파일은 삭제된다.
  • -p{비밀번호} 사이에 공백이 있으면 안 된다.
  • 스크립트를 작성한 후 sh {스크립트 파일명}으로 실행해보는 게 좋다. 권한 문제가 있으면 앞에 sudo 붙여서 실행한다.
  • 파일명은 date +"%Y%m%d%H%M%S"` 사이에 공백이 없어야 날짜 및 시간이 출력되는 것에 주의하자.
vi db_backup/backup.sh
#! /bin/bash
FILE_NAME=backup_`date +"%Y%m%d%H%M%S"`
BACKUP_DIR=/home/ubuntu/db_backup/

mysqldump -u {계정명} -p{비밀번호} --databases {데이터베이스명} > $BACKUP_DIR$FILE_NAME.sql

find $BACKUP_DIR -ctime +14 -exec rm -f {} \;

 

 

 

✨ 생성한 스크립트 파일에 권한 부여

backup.sh에 권한을 부여한 결과

chmod 100 db_backup/backup.sh

 

 

 

🐒 crontab을 이용한 작업 스케줄러

crontab -e

 

일 주일에 한 번 백업이 되도록 했다.

이미지에 보이는 명령문은 매주 월요일 새벽 2시에 실행되는 것을 의미한다.

0 02 * * 1
(0 ~ 59)분 (0 ~ 23)시 (1~31)일 (1 ~ 12)월 (0 ~ 6)요일

 

crontab -l

작업 리스트들을 출력한다.

 

 

🐛 문제 해결

백업 파일이 안 생겨서 스크립트에 작성했던 명령문을 실행하니까 비밀번호를 입력하라고 떴다.

-p {비밀번호}로 작성했기 때문에 프롬프트로 비밀번호를 직접 입력해야 하는 것이다.

작성한 비밀번호 그대로 실행되게 하려면 공백없이 -p{비밀번호}를 해준다.

 

파일명

FILE_NAME=backup_`date +"%Y%m%d%H%M%S"`		# 올바른 라인
FILE_NAME=backup_`date + "%Y%m%d%H%M%S"`	# 틀린 라인

 

자세히 보면 date + 뒤에 공백이 없어야 날짜 및 시간이 정확하게 출력된다.

 

 


👇 참고

https://wildeveloperetrain.tistory.com/208

 

mysql 자동 백업 설정 방법 (ubuntu server)

데이터베이스를 착각해서 데이터를 한번 날리고 나서야(정말 다행히도 개발서버) 백업 설정을 잘해야겠구나를 느끼게 되었습니다. 이후 운영환경의 서버에서는 데이터베이스 생성 후 가장 먼

wildeveloperetrain.tistory.com

 

반응형

'Linux' 카테고리의 다른 글

[Ubuntu] Docker MySQL 설치  (0) 2024.04.23
Ubuntu에서 OpenJDK 제거  (0) 2024.01.23
cron을 이용한 스케줄링  (0) 2023.12.29