자, 네 데이터베이스가 엄청 큰 도서관 아카이브라고 상상해봐. 전체 백업은 매일 밤마다 배달부가 와서 모든 책을 복사해가는 거야. 근데 거의 아무것도 안 바뀌었으면? 이건 느릴 뿐만 아니라, 트래픽도 많이 잡아먹고 저장 공간도 엄청 차지하지. 그래서 증분이랑 차등 백업이 등장하는 거지. 우리는 더 똑똑하게 일하는 거야, 더 많이가 아니라. 진짜로 바뀐 것만 복사하는 거지.
오늘은 다음 백업 타입들을 다뤄볼 거야:
- 전체 백업: 데이터베이스 전체를 복사하는 거야.
- 증분 백업: 마지막 백업 이후 바뀐 것만 복사해.
- 차등 백업: 마지막 전체 백업 이후 바뀐 것만 복사해.
각 방식마다 장점, 단점, 그리고 쓸만한 상황이 있어. 같이 파헤쳐보자.
전체 백업
전체 백업(Full Backup)은 특정 시점의 데이터베이스 전체를 백업하는 거야. 테이블, 인덱스, 스키마 같은 구조랑 모든 데이터를 다 포함하지. 쉽게 말하면, 데이터베이스의 "스냅샷"이야.
전체 백업 예시 커맨드:
pg_dump -U username -d database_name -F c -f full_backup.dump
여기서:
-U username— PostgreSQL 사용자 이름.-d database_name— 데이터베이스 이름.-F c— 백업 포맷(custom,pg_restore로 복구할 때 편해).-f full_backup.dump— 백업 파일 이름.
pg_dump랑 그 옵션에 대해서는 다음 강의에서 더 자세히 다룰 거야 :P
전체 백업의 장점:
- 복구가 쉬워. 뭔가 잘못되면 전체 백업으로 바로 복구할 수 있어.
- 전체 데이터 스냅샷. 다른 서버나 환경으로 데이터베이스를 옮길 때도 쓸 수 있어.
전체 백업의 단점:
- 데이터 용량: 데이터가 많으면 전체 백업도 엄청 커져.
- 시간 오래 걸림: 데이터가 많을수록 백업도 오래 걸려.
- 저장 공간: 매번 전체 백업하면 저장소가 금방 꽉 찰 수 있어.
전체 백업을 쓸만한 때:
- 처음 백업할 때.
- 데이터베이스에 큰 변경을 하기 전에.
- 장기 보관용(전체 백업해서 "콜드" 스토리지에 넣어둘 때).
증분 백업
증분 백업(Incremental Backup)은 마지막 백업 이후 바뀐 파일만 저장해. 전체든 증분이든 마지막 백업 이후 바뀐 것만 복사하니까, 디스크 공간도 아끼고 백업 속도도 빨라져.
PostgreSQL에서 증분 백업은 pgBackRest라는 툴로 할 수 있어. 이건 PostgreSQL 백업/복구를 위해 만들어진 강력한 유틸리티고, 전체/증분/차등 백업 다 지원해.
pgBackRest는 어떻게 동작하냐면?
pgBackRest는 파일의 메타데이터랑 체크섬을 이용해서 바뀐 걸 찾아내.- 진짜로 바뀐 파일만 증분 백업에 들어가.
- WAL 파일 자동 아카이빙도 지원해서, 원하는 시점까지 복구도 가능해.
증분 백업 예시 커맨드:
pgbackrest --stanza=main --type=incr backup
여기서:
--stanza=main— 설정 이름(특정 DB에 대한 파라미터 세트).--type=incr— 증분 백업임을 지정해.
첫 증분 백업 전에 전체(--type=full) 백업이 반드시 있어야 해.
pgBackRest로 증분 백업할 때 장점:
- 공간 절약: 바뀐 파일만 복사하니까.
- 빠른 백업: 변경이 적으면 진짜 빨라.
- WAL 자동 관리: pgBackRest가 WAL 파일도 알아서 처리해줘.
- 복구 유연성: 원하는 시점(PITR)으로 복구 가능.
단점과 주의점:
- 초기 설정 필요:
stanza, 저장소 디렉토리, 권한 등 설정해야 해. - 초보자에겐 어렵다: WAL이랑 PostgreSQL 구조를 좀 알아야 해.
- 저장소 의존성: 모든 백업이 중앙 저장소에 있으니, 저장소 관리가 중요해.
언제 증분 백업을 쓰면 좋냐면:
- 데이터베이스가 자주 업데이트될 때.
- 전체 백업이 너무 무겁거나 오래 걸릴 때.
- 최소한의 비용으로 자동화된 복구 전략을 만들고 싶을 때.
차등 백업
차등 백업(Differential Backup)은 마지막 전체 백업 이후 바뀐 모든 걸 저장해. 증분 백업이랑 다른 점은, 차등 백업은 매번 전체 백업 이후 모든 변경을 다 포함한다는 거야. 그래서 복구할 때는 마지막 전체 백업이랑 마지막 차등 백업만 있으면 돼.
예시 프로세스:
- 첫째 날 밤: 전체 백업(A) 생성.
- 둘째 날 밤(B): 차등 백업 생성 — A 이후 변경분 포함.
- 셋째 날 밤(C): 차등 백업 생성 — 역시 A 이후 변경분 포함.
장점:
- 복구가 쉬움: 전체 백업이랑 마지막 차등 백업만 있으면 돼.
- 전체 백업보다 빠름: 변경된 것만 복사하니까 전체 백업보단 빨라.
단점:
- 백업 파일 크기: 차등 백업이 쌓일수록 파일이 점점 커져. 전체 백업 이후 모든 변경을 다 포함하니까.
- 디스크 공간: 장기적으로 보면 증분 백업보다 공간을 더 쓸 수도 있어.
차등 백업은 복구를 쉽게 하고 싶을 때 좋아. 마지막 전체 백업 이후 모든 변경을 다 저장하니까. 데이터가 자주 바뀌는데, 매번 전체 백업은 너무 부담스러울 때 차등 백업이 속도랑 신뢰성 사이에서 좋은 타협이 돼.
백업 타입 비교
| 백업 타입 | 전체 | 증분 | 차등 |
|---|---|---|---|
| 데이터 용량 | 최대 | 최소 | 중간 |
| 백업 시간 | 느림 | 빠름 | 보통 |
| 복구 | 쉬움 | 복잡함(모든 백업 필요) | 중간(마지막 전체+차등 필요) |
| 언제 쓰나 | 최초 백업, 마이그레이션 | 실시간 잦은 백업 | 정기적 백업 |
백업 타입 선택은 데이터 보안, 데이터 변경 빈도, 그리고 사용 가능한 리소스에 따라 달라져. 작은 데이터베이스면 정기적으로 전체 백업만 해도 충분해. 데이터가 커지면 증분 백업이 공간을 아껴줄 거야. 빠른 복구가 중요하면 차등 백업이 최적일 수도 있어. 중요한 건, 정기적으로 백업하고 자동화 세팅을 잊지 않는 거야!
GO TO FULL VERSION