본문 바로가기
개발툴

운영중인 사이트 데이터 2중, 3중 백업하기

by 탁구치는 개발자 2024. 12. 5.

 

요즘 사이트를 하나 만들고 있습니다.

 

아직은 사용자가 많지 않아 집에 있는 NAS에서 운영하고 있는데요.
한 대의 NAS 서버에 웹 애플리케이션과 DB 서버가 동작하고 있습니다.
사이트에 여러 생활체육 정보들이 차곡차곡 쌓여가면서 한 가지 우려사항이 생겼습니다.
그건 바로 데이터 입니다.
백엔드에서는 생활 체육 관련된 사이트들을 돌아다니면서 새로운 대회들을 스크래핑 하고, 데이터를 가공한 후 DB에 저장하고 있습니다.
이런 데이터들이 점점 많아지면서 데이터 백업에 대한 중요성 또한 높아졌습니다.

지금부터는 DB 백업을 어떻게 하고 있는지에 대해서 기록해 보려고 합니다.

우선 DB 백업 스크립트를 만들어야 합니다.
db_backup.sh 파일을 만들고 아래와 같이 스크립트를 작성하였습니다.

#!/bin/bash

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/volume1/backup/mariadb10
cd /usr/local/mariadb10/bin

# primary backup
./mysqldump -u root '-p{패스워드}' {데이터베이스명} > $BACKUP_DIR/"backup_"$DATE.sql

echo 'sucess db backup : '$DATE
find $BACKUP_DIR -ctime +3 -exec rm -f {} \;

# secondary backup
cp -r $BACKUP_DIR /volumeUSB1/usbshare/backup

 

위의 스크립트가 실행되면 /volume1/backup/mariadb10 디렉토리에 백업 데이터가 생성됩니다.


하지만 안심할 수 없습니다.
NAS가 망가지면 해당 백업 데이터도 함께 사라질 수 있기 때문입니다.
다행히 NAS에는 외장하드가 하나 물려 있습니다.
위의 스크립트를 자세히 보시면 마지막 라인에 외장하드로 백업 데이터를 다시 한번 백업하는 단계가 포함되어 있습니다.

이제 DB 백업 스크립트가 완성되었습니다. 
db_backup.sh 스크립트를 특정 시간마다 실행해 주는 스케줄러 등록이 필요합니다.

제어판 > 작업 스케줄러에서 > 생성 버튼 클릭 > 예약된 작업 > 사용자 정의 스크립트
아래와 같이 등록해 주었습니다.

앞으론 새벽 12시 3분에 DB 백업 스크립트가 동작하게 됩니다. 안심이 됩니다.

 


이제 끝난 걸까요?
아닙니다.
NAS와 외장하드 함께 망가질 수도 있습니다.
이런 상황까지도 대비 할 수 있는게 진정한 프로입니다. ㅎㅎㅎ


저는 시놀로지에서 제공하고 있는 Hyper Backup을 이용하여 백업된 데이터를 구글 드라이브에 동기화 시키고 있습니다.


Hyper Backup 이 동작하면 다음과 같이 구글 드라이브에 동기화 됩니다.

 

 

이제는 진짜로 안심이 됩니다.

 

사이트의 핵심 자산인 데이터를 잃으면 그동안 쌓아온 모든 신뢰, 노력, 시간, 비즈니스의 생명력을 잃게 됩니다.

지금 당장은 귀찮더라도 백업 시스템은 필수입니다.