DB

[MySQL] (백업/복구6️⃣) 백업 복구 실수 방지 체크리스트와 실무 팁 💡

인생아 2025. 7. 12. 14:00
반응형

많은 개발자와 운영자가 “우린 매일 백업하고 있어요”라고 말하지만, 복구 테스트를 주기적으로 실행하는 곳은 드물다.
하지만 실무에서 중요한 건 복원 가능성이다.
“백업은 성공했는데, 복구는 실패했다”는 말이 나오지 않도록 실수를 예방하고 점검하는 전략을 정리한다.

✅ 가장 흔한 복구 실수 10가지

  1. 백업 파일이 없거나 최신 상태가 아님
    • 백업 스크립트는 존재하지만 실제 실행되지 않거나 cron 등록이 빠져 있음
  2. 백업 파일이 손상되었거나 복원 불가
    • 용량만 확인하고, 실제 mysql < backup.sql로 테스트하지 않음
  3. Binary Log가 비활성화되어 PITR이 불가능
    • log-bin 설정 누락으로 시점 복원이 불가
  4. 백업 파일에 트리거, 프로시저, 이벤트 누락
    • --routines, --events, --triggers 옵션 미사용
  5. 다른 버전/설정의 DB에 복원하다 실패
    • MySQL 5.x 백업을 8.x에 복원하거나, charset 충돌 발생
  6. 복원 순서 오류
    • mysqldump → binary log 순서를 반대로 하거나, 중복 실행
  7. DB 미리 생성하지 않고 복원
    • mysql -u root -p < dump.sql 실행 시 “Unknown database” 오류 발생
  8. 인코딩 깨짐
    • --default-character-set=utf8mb4 옵션 누락
  9. 디스크 용량 부족으로 복구 도중 중단
    • 백업 압축 해제 시 디스크 부족 문제
  10. 실제 운영 DB에 실수로 복원
  • 테스트 환경이 아닌 운영 서버에 복원 SQL 실행
반응형

🧾 실무 체크리스트

항목 점검 내용
✅ 백업 자동화 스크립트 cron 등록 여부, 로그 확인
✅ 백업 옵션 구성 --routines, --events, --single-transaction 포함 여부
✅ 백업 파일 유효성 실제 복원 테스트 여부
✅ 로그 보관 정책 Binary Log 보존 기간 설정 확인
✅ 복원 시나리오 테스트 정기적으로 복원 절차 실습 여부
✅ 파일 위치와 이름 체계 날짜, DB명 포함, 폴더 구조 일관성
✅ 복원 순서 문서화 백업 → 로그 → 적용 순서 매뉴얼 작성
✅ 운영/테스트 분리 실수 방지를 위한 별도 복원 환경 확보
✅ 디스크 용량 모니터링 /var, 백업 디렉토리 여유 공간 체크
✅ S3 또는 NAS 이중화 백업파일 다중 보관 여부
 

🧪 주기적인 복구 테스트 방법

  • 매주 1회, 개발/스테이징 서버에 랜덤 백업본을 복원해본다
  • 복원된 DB에서 쿼리, 트랜잭션, 인코딩 검증까지 확인
  • 실패 시 문제 원인을 기록하여 재발 방지 문서화

예:

mysql -u root -p < backup/mydb_20250701.sql

복원 시 예상 쿼리 실행 확인

SELECT COUNT(*) FROM users;
SELECT * FROM logs ORDER BY created_at DESC LIMIT 10;
반응형

🧠 실무 조직에서 자주 놓치는 부분

  • 담당자 교체 시 백업 구조 인수인계 미비
  • 장애 발생 시 백업 위치 모름
  • 복원 스크립트 버전 관리 안됨
  • S3 정책 변경으로 백업 업로드 실패 방치
  • 다중 백업 로테이션 불일치 (A 서버는 되고 B 서버는 안 됨)

정기적인 점검과 문서화는 백업 복구의 생명줄이다.

💡 실전 팁 모음

  • 백업 성공 시 Slack이나 메일로 알림 전송
  • 로그 파일 자동 압축 및 회전(logrotate)
  • 압축된 백업 파일의 SHA256 체크섬 저장
  • 복원 테스트 자동화(CI 스크립트로 검증 포함)
  • 중요한 테이블은 별도로 --no-data + SELECT INTO OUTFILE 백업도 병행

✅ 정리

  • 백업보다 중요한 건 복원 가능성이다
  • 실무에서 가장 흔한 실수 10가지를 점검하고, 정기 테스트로 미리 대비해야 한다
  • 체크리스트는 주기적으로 점검하며 실수 없는 복구 환경을 유지해야 한다
  • 복원 테스트는 반드시 운영 서버와 분리된 환경에서 반복 실습해야 한다
  • 문서화, 자동화, 알림, 이중화는 실무에서 필수다

🔗 공식 문서 참고
MySQL 8.0 Reference Manual - Backup and Recovery

 

반응형