DB

[MySQL] (백업/복구1️⃣) 백업의 모든 것: 개념, 필요성, 전략 총정리

인생아 2025. 7. 12. 08:20
반응형

MySQL에서 안정적인 운영을 위해 가장 중요한 요소 중 하나는 바로 백업(Backup)이다.
단 한 번의 장애나 실수로 수십만 건의 데이터를 잃을 수 있기 때문에, 정기적이고 전략적인 백업 체계를 갖추는 것은 실무에서 필수다.

✅ 백업이란 무엇인가?

백업은 데이터베이스의 현재 상태를 별도의 공간에 복사해서 저장하는 작업이다.
복사된 데이터를 통해 장애 발생 시 복구(Recovery)가 가능하며, 이는 곧 서비스의 안정성 보장으로 이어진다.

반응형

📌 백업이 필요한 이유

  1. 하드웨어 장애
    디스크 고장, 서버 다운, RAID 오류 등 물리적 문제로 데이터 손실이 발생할 수 있다.
  2. 휴먼 에러
    실수로 DELETE 또는 DROP을 실행했을 경우, 백업이 없으면 되돌릴 수 없다.
  3. 랜섬웨어·해킹 공격
    데이터 암호화, 삭제 등의 피해가 발생했을 때 복구 가능성을 확보할 수 있다.
  4. 업그레이드 실패 / 마이그레이션 실패
    버전 업 시 실패하거나, 테스트 부족으로 인해 DB가 손상될 수 있다.
  5. 복구 테스트 및 데이터 분석 목적
    특정 시점의 스냅샷 데이터를 추출하거나, 별도 테스트 환경을 구성하는 데 유용하다.

🧠 백업의 기본 전략 구성 요소

1. 백업 주기

  • Full Backup (전체 백업): 전체 데이터를 통째로 백업
  • Incremental Backup (증분 백업): 마지막 백업 이후 변경된 데이터만 백업
  • Differential Backup (차등 백업): 마지막 전체 백업 이후 변경된 데이터만 백업

실무에서는 일일 Full + 매시 Incremental 조합이 많이 사용된다.

2. 백업 위치

  • 로컬 디스크: 백업 속도 빠름. 그러나 서버 장애 시 위험
  • 원격 스토리지 (NAS, FTP): 장애 복원력 우수. 네트워크 이슈 주의
  • 클라우드 스토리지 (S3, GCS 등): 무제한 확장 가능. 비용 고려 필요

3. 백업 보관 정책

  • 최소 7일~30일 이상 보관
  • 보관 기간 내에 다양한 시점의 백업 복원 가능성 확보
  • 암호화 저장 및 접근 제어 필수

🔍 백업 방법의 종류

1. 논리 백업 (Logical Backup)

  • 대표 도구: mysqldump, mysqlpump
  • SQL 형태로 데이터를 백업
  • 텍스트 기반이므로 이식성 우수, 하지만 속도 느림, 대용량에 불리함
mysqldump -u root -p --all-databases > backup.sql

2. 물리 백업 (Physical Backup)

  • 데이터 파일(.ibd, .frm 등)을 직접 백업
  • 대표 도구: mysqlhotcopy, xtrabackup, 스냅샷 복제
  • 장점: 백업/복원 속도 빠름, 대용량에 적합
  • 단점: MySQL 버전 및 환경 종속성 존재

3. 바이너리 로그 기반 백업

  • Binary Log를 활용해 Point-in-Time Recovery(PITR) 가능
  • 실시간 변경사항 추적 가능
  • mysqldump + binlog 조합이 실무 표준

🛡️ 백업 전략 수립 시 고려할 핵심 요소

  • 백업 대상 선정: 전체 DB? 특정 테이블만? 시스템 설정 포함 여부
  • 백업 스케줄링: 정기 실행 자동화 필요 (cron, scheduler, bash script)
  • 복구 시점: 특정 시점 복원 필요 여부 (PITR)
  • 성능 부하: 서비스 중단 없이 백업 가능한지 여부
  • 암호화 및 보안: 외부 노출 방지, 접근 권한 관리
반응형

⚙️ 실무 백업 전략 예시

서비스형 쇼핑몰의 MySQL 백업 전략

  • 매일 새벽 4시 mysqldump 전체 백업
  • 매 10분 단위 Binary Log 백업
  • 백업 파일은 NAS 및 AWS S3에 중복 저장
  • 1개월 단위로 백업 파일 자동 삭제
  • 복원 테스트는 주 1회 테스트 서버에서 검증

이와 같이 운영 환경에 맞춘 자동화 + 보관 정책이 핵심이다.

🧪 복구가 되는지 항상 테스트하라

백업은 저장만으로 끝나는 것이 아니다.
복구 가능한 백업인지 테스트하고 검증해야만 의미가 있다.
종종 복구 과정에서 오류가 발생하거나, 일부 테이블이 빠진 경우도 존재한다.
백업 검증 자동화도 고려하자.

mysql -u root -p < backup.sql

이 명령어로 복원 테스트를 수행하고, 에러 로그를 점검해야 한다.

✅ 정리

  • MySQL에서 백업은 생명줄이다.
  • 전략은 반드시 "주기 + 방법 + 위치 + 자동화 + 복구 시나리오"로 구성되어야 한다.
  • mysqldump, Binary Log, xtrabackup 등 다양한 도구 조합이 실무에서 사용된다.
  • 단순히 백업을 만드는 것이 아니라, 복구 가능한 백업을 만드는 것이 목표다.

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

반응형