반응형
💋 인트로
안녕하세요! 우아한테크코스 5기 깃짱입니다.
이번 포스팅에서는 mysqldump
명령어로 Docker 위에 띄운 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 {} \;
- 백업 파일 이름은 관리하기 쉽도록 날짜와 시간을 함께 관리합니다.
- 데이터가 훼손되었을 때 가장 빠르게 대응할 수 있다고 생각하여 이름을 위와 같이 설정했습니다.
mysqldump
는 MySQL 데이터베이스의 백업을 생성하는 명령어입니다.mysqldump
를 사용하여 데이터베이스의 스키마와 데이터를 백업하고, 백업 파일을 사용하여 데이터베이스를 복원할 수 있습니다.- 일반적으로 mysqldump -u [사용자명] -p [데이터베이스명] > [백업파일명.sql] 와 같이 사용합니다.
- u 옵션은 MySQL 데이터베이스에 접속하는 사용자 계정을 지정합니다.
- p 옵션은 비밀번호를 입력할 때 사용됩니다. 근데, 알 수 없는 이유로 해당 옵션이 제대로 들지 않아서, 위의 프로젝트 내 스크립트에서는
--password
로 지정했습니다. (원인을 알면 수정하겠습니다.) [데이터베이스명]
은 백업할 데이터베이스의 이름이며,[백업파일명.sql]
은 생성되는 백업 파일의 이름과 경로를 지정합니다.
5. 실행 권한 부여
chmod +x backup.sh
6. 작업 스케줄러(crontab
) 설정
crontab -e
crontab
은 리눅스나 유닉스 시스템에서 주기적으로 실행되는 작업을 스케줄링하는 명령어입니다.crontab
명령어를 사용하여 특정 시간에 스크립트, 명령어 또는 프로그램을 실행하도록 예약할 수 있습니다.
7. 크론탭 설정
0 4 * * * sudo /usr/bin/sh /home/ubuntu/db_backup/backup.sh
- 위의 스크립트를 매일 새벽 4시에 실행하도록 하는 명령어입니다.
8. 크론탭 설정확인
crontab -l
💋 참고자료
- 제나
도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
반응형