Skip to content
VDS · 백업 및 디스크

복원 테스트: 백업을 미리 점검하기

시험 복원을 수행하는 방법, 결과로 무엇을 기록할지, 그리고 실제 재난이 아닌 훈련에서만 드러나는 전형적인 문제들을 설명해요.

업데이트 2026년 8월 23일

복원해 본 적 없는 백업은 백업이 아니라 희망입니다. 분기에 한 번, 한 시간을 들여 복원 연습을 하면 그 희망이 검증된 사실이 됩니다.

무엇을 확인할까요

장애가 발생하기 전에 답을 알고 있어야 할 세 가지 질문이 있습니다.

  1. 완전성. 백업에 시작에 필요한 모든 것이 들어 있나요? 데이터, 설정, 키, 인증서, 스케줄까지요.
  2. 가독성. 압축 파일이 열리나요? 데이터베이스 덤프가 오류 없이 복원되나요?
  3. 시간. 전체 복원에 몇 시간이 걸리나요? 이 숫자는 미리 알고 있어야 하며, 압박 속에서 알아내서는 안 됩니다.

연습은 어떻게 진행할까요

가장 정직한 방법은 운영 서버가 아닌 별도 장비에서 진행하는 것입니다. VDS-1을 한 달간 신청하고, 거기에 처음부터 복원한 뒤 시간을 재 보세요.

export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic"
export RESTIC_PASSWORD_FILE=/root/.restic-pass

restic snapshots
restic restore latest --target /restore
ls -la /restore

데이터베이스를 복원합니다.

docker compose up -d db
gunzip -c /restore/var/backups/db.sql.gz | docker compose exec -T db psql -U postgres app
docker compose exec -T db psql -U postgres app -c "select count(*) from users;"

애플리케이션을 실행하고 브라우저에서 여는 것이 마지막 단계입니다. 페이지가 열리기 전까지는 복원이 끝난 것이 아닙니다.

더 가벼우면서도 유용한 방법도 있습니다. 같은 장비의 별도 컨테이너에 데이터베이스만 복원하고, 데이터가 존재하며 최신인지 확인하는 것입니다.

압축 해제가 성공했는지만이 아니라 데이터의 날짜도 확인하세요. 안정적으로 생성되지만 한 달 전부터 필요한 디렉터리를 포함하지 않게 된 백업은 스냅샷 목록에서 지극히 정상으로 보입니다. 테이블의 레코드 수와 최신 파일의 타임스탬프를 비교하세요.

보통 드러나는 것들

  • .env 파일을 잊는 경우. 데이터는 있지만 그 데이터에 접근할 비밀번호가 없습니다.
  • 인증서를 잊는 경우. 사이트는 뜨지만 HTTPS로 응답하지 않습니다.
  • 스케줄을 잊는 경우. 모든 것이 작동하지만 백업이 더 이상 생성되지 않으며, 한 달 뒤에야 알게 됩니다.
  • 시작 순서를 적어 두지 않은 경우. 애플리케이션이 데이터베이스보다 먼저 시작해 충돌합니다.
  • 저장소 비밀번호가 분실한 장비에만 있던 경우. 백업은 존재하지만 접근할 수 없습니다.
  • 복원에 두 시간이 아니라 열 시간이 걸리는 경우. 수신 대역폭이나 디스크 선반 문제입니다. 디스크 속도를 참고하세요.

순서를 적어 두세요

연습을 바탕으로 짧은 지침을 작성해 장비 밖에 보관하세요.

  1. 같거나 더 높은 등급의 장비를 주문합니다. 프로비저닝은 약 1분 걸립니다.
  2. Docker를 설치하고 백업에서 /opt/myapp을 복원합니다.
  3. 데이터베이스 덤프를 복원하고 레코드 수를 확인합니다.
  4. /etc/nginx와 인증서를 복원하고 웹 서버를 실행합니다.
  5. 도메인을 새 주소로 연결합니다.
  6. crontab.txt에서 스케줄을 복원합니다.
  7. 확인합니다. 사이트가 열리고, 로그인이 작동하고, 백업이 다시 생성됩니다.

5번 항목이 가장 과소평가됩니다. DNS 레코드는 즉시 갱신되지 않으므로, 이전을 염두에 둔다면 미리 레코드 TTL을 300초로 낮춰 두세요.

얼마나 자주

운영 서비스는 분기에 한 번, 나머지는 6개월에 한 번입니다. 그리고 항상 큰 변경이 있은 직후에도 하세요. 새 데이터베이스, 새 서비스, 디렉터리 이동 등이요. 연습을 캘린더에 넣어 두세요. 그러지 않으면 절대 하지 않게 됩니다.

백업에 무엇이 들어가야 하는지는 무엇을 백업할까요에서, 어디에 보관할지는 오프사이트 백업에서 확인하세요. 이미 장애가 발생했다면 데이터 손실을 참고하세요.