최근 Cafe24 가상 서버를 구매해 DB 서버를 만들었습니다. 직접 DB를 구축했기 때문에 운영 중 DB가 어떤식으로든 깨지거나 복구가 필요한 상황이 발생할 것을 대비해 백업과 복구 설정이 필요했습니다.
이번 포스팅에서는 가상 서버에 설치된 DB를 백업/복구할 수 있는 방법을 알아보겠습니다.
※ 테스트 환경
백업
먼저, DB를 조회해보겠습니다.
mysql -u root -p
show databases;
deardayz라는 DB를 백업하겠습니다.
아래 명령어를 통해 sql 파일이 생성되는지 백업 테스트를 해봅니다.
cd /home
# 백업 폴더 생성
mkdir backup
mysqldump -u계정 -p패스워드 deardayz > deardayz.sql
crontab을 통해 주기적으로 백업 명령어가 실행될 수 있도록 스크립트 파일을 만들어보겠습니다.
# 스크립트 폴더 생성
mkdir script
vim db_backup.sh
스크립트 내용
7일이 경과한 백업 파일은 삭제시켰습니다.
#!/bin/bash
# 현재 날짜
now=$(date +%Y%m%d%H%m)
# 경로
path="/home/backup/"
# 백업 실행
mysqldump -u계정 -p패스워드 deardayz > ${path}"deardayz_"${now}.sql
# 7일 경과 파일 삭제
find ${path} -type f -name "*.sql" -mtime +7 -exec rm -f {} \;
스크립트 파일에 실행 권한을 부여합니다.
# 권한 부여
chmod 711 db_backup.sh
# 스크립트 실행
./db_backup.sh
이제 crontab에 해당 스크립트를 등록합니다.
crontab -e
# 매일 자정 DB 백업 실행
0 0 * * * /bin/bash /home/script/db_backup.sh
복구
이제 백업한 파일을 사용해 DB 복구를 진행해보겠습니다.
테스트를 위해 기존 DB는 삭제합니다.
drop database deardayz;
복구 실행전 다시 DB를 먼저 생성합니다.
create database deardayz character set utf8mb4;
cd /home/backup
mysql -u 계정 -p deardayz < deardayz_202501101701.sql
#패스워드 입력
Enter password: