스탬프크러쉬가 실 사용자에게 서비스 되면서 DB 관리에 대한 중요성이 매우 실감되었다!
불가피한 이유로 DB 가 날아간다면 그야말로 재앙이 될 거라는게 예상이 되었다.
그래서 DB 를 자동 백업할 수 있도록 스크립트를 작성하고 스케줄러를 설정해두었다.
아래 방법은 데이터베이스 서버에서 진행해주었고 현재 데이터베이스 서버에서 docker container 를 띄워두고 해당 container 에서 mysql 서버가 실행되는 중이다.
1. 백업 파일을 저장할 폴더를 생성
mkdir /db_backup
2. 생성된 백업 폴더의 권한을 수정
chmod 755 /db_backup
3. 백업을 수행할 스크립트 파일 생성
vi /db_backup/backup.sh
4. 생성된 스크립트 파일의 내용 입력
# /bin/bash
FILE_NAME=backup_`date +"%Y%m%d%H%M%S"`
BACKUP_DIR=/home/ubuntu/db_backup/
sudo docker exec mysql-container sh -c 'exec mysqldump -u root --password=[비번] stampcrush' > $BACKUP_DIR$FILE_NAME.sql
sudo find $BACKUP_DIR -ctime +5 -exec rm -f {} \\;
- DB 백업 파일의 이름은 백업될때의 시간을 파일 뒤에 붙여준다. 이슈가 발생했을 때 이슈가 발생한 시점의 로그 기록을 보고 해당 이슈 발생 전의 백업 파일로 DB 를 백업하면 되기 때문이다.
- 스탬프크러쉬는 실사용자가 아직 적기 때문에 삭제 주기는 5일로 정해주었다.
5. 실행 권한 부여
chmod +x backup.sh
6. 작업 스케줄러(crontab) 설정
crontab -e
7. 크론탭 설정
매일 새벽 4시에 실행
0 4 * * * sudo /usr/bin/sh /home/ubuntu/db_backup/backup.sh
- 유닉스에서는 잡 스케줄러를 크론이라고 부른다
- 스탬프크러쉬의 사용자 카페는 영업시간이 오전 11시~오후 11시이기 때문에 새벽 시간으로 백업을 수행하도록 해주었다.
8. 크론탭 설정확인
crontab -l
'우아한테크코스' 카테고리의 다른 글
시간은 금이다! 효율적으로 회의 준비하기 (3) | 2023.10.18 |
---|---|
Jenkins 와 Docker 를 사용해서 SpringBoot Application 무중단 배포하기 (2) | 2023.10.11 |
스탬프크러쉬 테이블 구조 개선기 (0) | 2023.09.30 |
롬복(lombok) 의 @EqualsAndHashCode 는 필드로 비교할까 getter 로 비교할까 (0) | 2023.09.30 |
5차 데모데이 회고 (0) | 2023.09.26 |