[Redis] Redis 백업 및 영속화 전략 (RDB & AOF)
Redis 인메모리 데이터의 디스크 백업 방법과 특징을 RDB 스냅샷, AOF 로그 기반으로 정리
Redis 백업 및 영속화 전략
Redis는 기본적으로 메모리 기반 데이터 저장소입니다. 이는 빠른 속도의 장점이 있지만, 서버가 리부팅되거나 장애가 발생하면 메모리 데이터가 사라지는 특성이 있습니다. 이를 해결하기 위해 Redis는 디스크에 데이터를 저장하는 영속화(Persistence) 기능을 제공합니다.
📌 왜 Redis 백업이 필요한가?
Redis는 기본적으로 인메모리에 데이터를 저장합니다.
즉, 프로세스가 종료되거나 서버가 재부팅될 경우 메모리 데이터가 사라집니다.
이를 방지하기 위해 디스크에 데이터를 백업해야 하며, Redis는 2가지 주요 백업 방식을 지원합니다.
- RDB (Snapshot) 방식
- AOF (Append Only File) 방식
🧠 1. RDB (Snapshot) 방식
📌 개념
RDB는 특정 시점의 메모리 상태를 스냅샷 형태로 저장하는 방식입니다. 이 스냅샷은 .rdb 확장자의 파일(dump.rdb)로 저장되며, Redis 부팅 시 해당 파일을 읽어 데이터를 복원합니다.
📌 동작 원리
redis.conf 파일의 save 옵션을 통해 주기적인 스냅샷 저장 조건을 정의합니다. 예를 들어:
1
2
3
save 60 10
– 60초 동안 10개 이상의 키 변경이 발생하면 snapshot 저장합니다. 여러 조건이 있을 경우 조건 중 하나라도 만족하면 저장됩니다.
📌 예시 설정
1
2
3
4
5
save 3600 1
save 300 100
save 60 10000
이는 세 조건 중 하나라도 만족되면 스냅샷이 실행됩니다.
📌 특징 – 장점 & 단점
| 장점 | 단점 |
|---|---|
| ✨ 작은 파일로 관리가 쉬움 | ⚠ 스냅샷 사이 데이터 유실 가능 |
| ✨ 빠른 복구 가능 | ⚠ fork 기반이라 리소스 소모 |
🧠 2. AOF (Append Only File) 방식
📌 개념
AOF는 모든 쓰기 명령어(SET, DEL 등)를 로그 형태로 저장하는 방식입니다.
Redis 재부팅 시 이 로그를 순차적으로 재실행하여 데이터를 복원합니다.
📌 동작 원리
Redis는 쓰기 명령 실행 시마다 로그 파일(appendonly.aof)에 명령을 기록하며,
로그 파일은 텍스트 형식이므로 사람이 직접 읽거나 수정할 수 있습니다.
📍 AOF Rewrite (압축)
AOF 파일은 계속 기록되므로 파일 크기가 커지는 경향이 있습니다.
이때 Rewrite 기능을 사용하면 불필요한 명령을 제거하여 파일 크기를 줄일 수 있습니다.
예를 들어 같은 키에 대해 SET 명령이 100회 실행되었을 때, 마지막 값만 기록하면 충분하므로 Rewrite는 파일을 최적화합니다.
📊 RDB vs AOF – 비교
| 항목 | RDB | AOF |
|---|---|---|
| 저장 방식 | 스냅샷 시점 저장 | 모든 쓰기 명령 저장 |
| 복구 시점 | 가장 최근 스냅샷 | 전체 로그 재실행 |
| 파일 크기 | 작음 | 상대적으로 큼 |
| 복구 성능 | 빠름 | 느림 (로그 재실행) |
| 데이터 완전성 | 일부 유실 가능 | 대부분 보장 |
🧩 실습 예시 (Docker)
RDB 기반 백업
1
2
3
4
docker run \
-v $(pwd)/redis.conf:/redis.conf \
--name redis-rdb \
redis redis-server /redis.conf
Redis에 데이터 입력 후 RDB 조건 만족 여부를 확인해 보세요.
AOF 기반 백업
redis.conf에서 다음 설정 활성화:
1
appendonly yes
이후 컨테이너를 실행하면 AOF 로그로 백업이 수행됩니다.
🧠 참고 – 운영 환경 전략
운영 환경에서는 RDB와 AOF를 조합하여 사용하는 것이 일반적입니다. – RDB로 주기적인 전체 스냅샷 저장 – AOF로 세부 로그 저장 및 복원 안정성 확보
📌 마무리
Redis 백업은 단순히 데이터를 디스크에 저장하는 것이 아니라, 데이터 유실을 최소화하고 필요한 복구 전략을 갖추는 작업입니다.
✔ RDB: 빠른 백업 & 빠른 복구 ✔ AOF: 높은 데이터 완전성
필요하다면 두 방식을 동시 적용하여 안정성과 성능 두 가지 모두 확보하는 것이 좋습니다.