[Database] MySQL 실습(11) - 백업/복구

우유·2026년 2월 4일

[Cloud] Database

목록 보기
14/28

11. 백업/복구

1) 왜 백업/복구는 “옵션”이 아닌가

“DB 장애는 ‘언젠가 반드시’ 발생한다.문제는 ‘발생하느냐’가 아니라‘얼마나 빨리 복구하느냐’다.”


실제로 자주 발생하는 사고

사고 유형결과
DELETE / UPDATE 실수데이터 영구 손실
애플리케이션 버그대량 데이터 오염
디스크 장애DB 기동 불가
잘못된 마이그레이션구조/데이터 파손
랜섬웨어전체 암호화
  • 오직 백업/복구만 가능

2) 백업의 기본 개념

백업 ≠ 복구

❌ “백업 파일이 있다”

⭕ “복구가 실제로 된다”

반드시 세트로 기억할 것

  • 백업만 있고 복구 테스트 안 함 → 백업 없음과 동일
  • 운영에서는 “복구 시점”이 핵심

3) 백업의 두 가지 큰 분류

3-1) 논리 백업 (Logical Backup)

개념

  • SQL 형태로 데이터 덤프
  • 사람이 읽을 수 있음

대표 도구

  • mysqldump

예제: 전체 DB 백업

mysqldump -u root -p bootcamp_shop > bootcamp_shop.sql

특정 테이블만 백업

mysqldump -u root -p bootcamp_shop orders order_items > orders_backup.sql

장점 / 단점

장점단점
단순대용량 느림
이식성 좋음복구 시간 김
부분 복구 쉬움락/성능 영향
  • 교육/소규모 서비스/테이블 단위 복구에 적합

3-2) 물리 백업 (Physical Backup)

개념

  • DB 데이터 파일 자체를 복사
  • 사람이 직접 보긴 어려움

대표 도구

  • Percona XtraBackup
  • 클라우드 스냅샷(EBS, Disk Snapshot)

특징

장점단점
매우 빠름구조 의존
대용량 적합부분 복구 어려움
운영 서비스 친화설정 복잡

운영 서비스 / 대규모 DB 필수


4) 트랜잭션과 백업의 관계

질문

“백업 중에 데이터가 바뀌면 어떻게 되나?”

  • 트랜잭션 로그(Log) 덕분에 일관성 있는 백업 가능

InnoDB + 트랜잭션 덕분에 가능한 것

  • 백업 도중에도:
    • 읽기/쓰기 계속 가능
    • 깨진 데이터 없이 백업

InnoDB + 트랜잭션 = 백업 가능성의 전제 조건


5) 복구(RESTORE)의 실제 의미

복구란 무엇인가?

“DB를 특정 시점 상태로 되돌리는 작업”


5-1) 논리 백업 복구

mysql -u root -p bootcamp_shop < bootcamp_shop.sql

특징:

  • 테이블 DROP 후 다시 생성됨
  • 인덱스도 같이 재생성됨
  • 시간 오래 걸릴 수 있음

5-2) 특정 시점 복구(Point-in-Time Recovery, PITR)

개념

  • 전체 백업 + Binary Log
  • “어제 14:32:10 상태로 복구”

개념 흐름

[전체 백업] + [binlog 재생]

binlog 확인

SHOW VARIABLES LIKE 'log_bin';

binlog 기반 복구 흐름

mysqlbinlog binlog.000001 | mysql -u root -p

- 특정 시간으로 복
mysqlbinlog \
  --stop-datetime="2026-01-29 14:30:00" \
  binlog.000001 | mysql -u root -p

6) 인덱스와 백업/복구의 관계

중요한 사실

인덱스도 데이터다.백업/복구 대상이다.


논리 백업 시

  • CREATE INDEX 문도 함께 저장
  • 복구 시 인덱스 재생성 → 시간 소요

물리 백업 시

  • 인덱스 포함된 상태로 복구
  • 훨씬 빠름

📌 대규모 DB에서 물리 백업을 쓰는 이유


7) 클라우드 환경에서의 백업

7-1) Managed DB (RDS, Cloud SQL)

제공 기능

  • 자동 백업
  • 스냅샷
  • PITR

❗ 설정과 책임은 사용자에게 있음

  • 보존 기간
  • 백업 주기
  • 복구 테스트 여부

7-2) EC2 / VM 직접 설치 DB

전부 엔지니어 책임

  • 백업 스크립트
  • 스케줄링(cron)
  • 외부 저장소(S3, NFS)
  • 암호화
profile
Front-end Developer, Cloud Engineer

0개의 댓글