MySQL DB 자동 백업
우분투 서버에서 매일 새벽에 DB를 통째로 백업하고 압축한 뒤, 용량 관리를 위해 7일이 지난 과거 백업본은 알아서 지워주는 스마트한 스크립트 설정법을 알려드립니다.
1. 백업 파일이 저장될 폴더 만들기
가장 먼저 백업 파일들을 안전하게 모아둘 전용 폴더를 하나 만들어 줍니다.
sudo mkdir -p /var/backups/mysql
2. 자동 백업 스크립트 작성
서버가 정해진 시간마다 실행할 작업 지시서(스크립트)를 만듭니다.
sudo nano /usr/local/bin/db_backup.sh
빈 편집기 화면이 열리면, 아래의 코드를 그대로 복사해서 붙여넣습니다. (우분투 환경에서는 root 권한으로 스크립트가 실행될 경우, 별도의 DB 비밀번호를 적지 않아도 안전하게 백업이 가능합니다.)
#!/bin/bash
# 1. 백업이 저장될 폴더와 오늘 날짜 설정
BACKUP_DIR="/var/backups/mysql"
DATE=$(date +"%Y%m%d_%H%M")
# 2. 전체 데이터베이스 백업 및 gzip으로 압축하여 저장
mysqldump --all-databases | gzip > $BACKUP_DIR/db_backup_$DATE.sql.gz
# 3. 서버 용량 확보를 위해 7일(+7)이 지난 과거 백업 파일은 자동 삭제
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +7 -delete
(저장하고 나오기: Ctrl+O, Enter, Ctrl+X)
3. 스크립트에 실행 권한 부여
방금 만든 텍스트 파일이 하나의 '프로그램'처럼 동작할 수 있도록 실행 권한표를 달아줍니다.
sudo chmod +x /usr/local/bin/db_backup.sh
💡 중간 테스트: 설정이 잘 되었는지 지금 바로 백업을 한 번 실행해 볼까요? 터미널에 sudo /usr/local/bin/db_backup.sh를 입력한 뒤, ls -lh /var/backups/mysql을 쳐보세요. 방금 전 시간으로 압축된 .sql.gz 파일이 생겼다면 완벽하게 성공한 것입니다!
4. 크론탭(crontab)에 스케줄 등록
이제 이 스크립트를 '매일 새벽'에 알아서 실행하도록 시스템 스케줄러인 크론탭에 등록합니다.
sudo crontab -e
(처음 실행하면 편집기를 고르라고 나오는데, nano에 해당하는 숫자(보통 1번)를 누르시면 됩니다.)
파일의 맨 아래 빈 줄로 내려가서, 매일 새벽 3시 0분에 스크립트를 실행하라는 아래의 명령어를 한 줄 추가해 줍니다.
0 3 * * * /usr/local/bin/db_backup.sh
(마찬가지로 Ctrl+O, Enter, Ctrl+X를 눌러 저장하고 나옵니다.)
이제 매일 새벽 3시마다 서버가 아무도 모르게 조용히 전체 DB를 꾹꾹 눌러 압축한 뒤 보관하고, 오래된 파일은 알아서 비워줄 것입니다.
'Programming > LINUX' 카테고리의 다른 글
| NGINX 워드프레스 404 not found error 해결법 (0) | 2020.03.22 |
|---|---|
| 워드프레스 Error establishing a database connection 해결 방법 (1) | 2020.03.15 |
| vsftpd 설정하기 (0) | 2020.02.29 |
| Apache 서버 iframe 에 외부 페이지가 뜨지 않는 경우 (0) | 2020.02.27 |
댓글
이 글 공유하기
다른 글
-
NGINX 워드프레스 404 not found error 해결법
NGINX 워드프레스 404 not found error 해결법
2020.03.22 -
워드프레스 Error establishing a database connection 해결 방법
워드프레스 Error establishing a database connection 해결 방법
2020.03.15 -
vsftpd 설정하기
vsftpd 설정하기
2020.02.29 -
Apache 서버 iframe 에 외부 페이지가 뜨지 않는 경우
Apache 서버 iframe 에 외부 페이지가 뜨지 않는 경우
2020.02.27