$ mkdir ~/MySQL_Backup
- 사용자의 기본 디렉터리에 MySQL_Backup 폴더를 생성한다.
$ mysqldump -u [MySQL 사용자명] -p[MySQL 비밀번호] [DB명] > [DB백업 파일명]
- mysqldump를 이용해 DB를 백업할 수 있다.
$ mysqldump -u root -p2!1@ FinalProject > FinalProject.sql
- mysqldump를 이용해 ID를 root, 비밀번호를 2!1@
- FinalProject 데이터베이스를 FinalProject.sql 파일로 백업한다.
$ DATE=$(date +%Y_%m_%d_%H_%M_%S)
$ echo $DATE
# ex) 2021_08_12_23_58_46
- DATE 변수에 현재 Linux 시간을 형식에 맞게 저장한다.
- 저장한 DATE 변수를 Linux Console에 출력한다.
$ DB_BACKUP_DIR=/home/ubuntu/MySQL_Backup/
$ find $DB_BACKUP_DIR -ctime +7 -exec rm -f {} \;
- DB_BACKUP_DIR 변수에 MySQL을 백업할 디렉터리명을 지정한다.
- DB_BACKUP_DIR 변수에 저장된 위치에서 수정된 지 7일이 지난 파일을 출력한다.
- -exec rm -f {} ; : 검색된 파일들을 삭제한다.
- mtime : 파일의 수정된 시간
- ctime : 파일의 생성된 시간
- atime : 파일의 마지막 접근 시간
$ mkdir ~/shNote
$ cd ~/shNote
$ vi MySQL_Schedule_Backup.sh
- 사용자의 기본 디렉터리에 shNote 폴더를 생성한다.
- 사용자의 기본 디렉터리에서 shNote 폴더로 이동한다.
- MySQL_Schedule_Backup.sh이름의 Shell Script 파일을 작성한다.
# 리눅스 현재 시간을 시간 형식에 맞게 출력한다.
DATE=$(date +%Y_%m_%d_%H_%M_%S)
# MySQL의 .sql파일을 백업할 디렉터리 위치를 지정한다.
DB_BACKUP_DIR=/home/ubuntu/MySQL_Backup/
# DATE 변수의 현재 시간을 출력한다.
echo $DATE
# DB_BACKUP_DIR 변수의 작업할 디렉터리를 출력한다.
echo $DB_BACKUP_DIR
# mysqldump 명령어를 이용해 FinalProject 데이터베이스를 .sql 파일로 저장한다.
mysqldump -u root -p!2!4 FinalProject > $DB_BACKUP_DIR"FinalProject_"$DATE.sql
# 백업파일을 저장하는 폴더에서 7일 이전에 생성된 모든 파일을 삭제한다. (하위 디렉터리까지)
find $DB_BACKUP_DIR -ctime +7 -exec rm -f {} \;
- 파일을 작성한 후 (:wq) 명령어를 사용해 저장 후 빠져나온다.
$ crontab -e
- nano 편집기를 이용해 Linux에서 제공하는 crontab에서 스크립트를 자동 실행할 수 있다.
- 단순히 /etc/bashrc에 쉘 스크립트 파일을 삽입해 실행하는 것보다 안전하다.
0 */1 * * * sh /home/ubuntu/shNote/MySQL_Schedule_Backup.sh
- {Ctrl} (+) X > Y > {Enter} 키를 눌러 crontab 작성을 종료한다.
- 한 시간마다 MySQL_Schedule_Backup.sh 쉘 스크립트를 실행합니다.
$ sudo cron start
- cron을 실행해 쉘 스크립트가 동작하도록 설정한다.
'Database > MySQL' 카테고리의 다른 글
[MySQL] SQL Injection 예제 (0) | 2021.08.13 |
---|---|
[MySQL] 클론코딩 tumblr의 게시글 검색 제작기 (0) | 2021.07.21 |