서버 운영에서 가장 치명적인 사고 중 하나는 데이터 손실입니다. 하드웨어 고장, 실수로 인한 삭제, 랜섬웨어 공격 등 다양한 원인으로 데이터가 사라질 수 있으며, 이를 대비하는 유일한 방법은 체계적인 백업입니다.

3-2-1 백업 규칙

백업 업계에서 오랫동안 통용되어온 원칙으로, 다음과 같이 요약됩니다.

  • 3개의 복사본을 유지한다 (원본 포함)
  • 2개의 다른 저장 매체에 저장한다 (예: 로컬 디스크 + 클라우드 스토리지)
  • 1개는 원격지(오프사이트)에 보관한다

이 원칙을 따르면 하나의 저장소에 문제가 생기더라도 다른 위치의 백업으로 데이터를 복구할 수 있습니다.

데이터베이스 백업 방법

MySQL의 경우 mysqldump를 사용해 전체 데이터베이스를 SQL 파일로 백업할 수 있습니다.

mysqldump -u root -p mydatabase > backup_$(date +%Y%m%d).sql

PostgreSQL은 pg_dump 명령을 사용하며, 대용량 데이터베이스의 경우 증분 백업이나 WAL(Write-Ahead Log) 아카이빙을 함께 고려해야 합니다.

자동화된 백업 스케줄링

cron을 이용해 매일 새벽 특정 시간에 자동으로 백업이 실행되도록 설정하고, 백업 파일을 클라우드 스토리지(S3, Google Cloud Storage 등)에 자동 업로드하는 스크립트를 함께 구성하는 것이 일반적입니다.

백업만큼 중요한 복구 테스트

백업 파일이 존재한다고 해서 반드시 복구가 가능한 것은 아닙니다. 정기적으로 백업 파일을 실제로 복원해보는 테스트를 진행해야 실제 장애 상황에서 당황하지 않고 데이터를 되살릴 수 있습니다.

정리

백업은 "언젠가 필요할 수도 있는 보험"이 아니라 서버 운영의 필수 요소입니다. 3-2-1 규칙을 기본으로 삼아 우리 서비스에 맞는 백업 전략을 구축해보시기 바랍니다.