🖥️ 백엔드/Redis
[Redis] RDB와 AOF
케로⸝⸝◜࿀◝ ⸝⸝
2024. 6. 18. 15:02
개요
- Redis는 비휘발성 데이터 저장을 위해 두 가지 주요 방식인 RDB (Redis Database)와 AOF (Append-Only File)를 제공
- 각각의 방식은 데이터의 영속성과 복구를 다루는 방법이 다르며, 각자의 장단점이 있다.
RDB (Redis Database)
- RDB는 Redis 데이터베이스를 주기적으로 덤프하는 방식
- 이 방식은 전체 데이터베이스의 스냅샷을 특정 시간 간격으로 저장
특징
- 주기적 스냅샷
- RDB 파일은 지정된 시간 간격에 따라 데이터베이스의 상태를 저장
- 예를 들어, 매 5분마다 또는 1000개의 변경사항이 생길 때마다 RDB 파일이 생성될 수 있음
- 복구 속도
- 전체 데이터베이스를 덤프한 파일이기 때문에 복구 속도가 빠름
- 작업 부하 감소
- 주기적인 스냅샷을 이용해 디스크 I/O 작업을 일정하게 유지하여 서버의 부하를 줄일 수 있음
- 데이터 일관성
- 복구 시점에 대한 데이터 일관성이 보장되므로 데이터가 정확한 시점으로 복구됨
장점
- 복구 신속성: 재부팅 시 전체 데이터베이스를 빠르게 복구할 수 있음
- 서버 부하 분산: 서버 부하가 적은 시간대에만 덤프를 수행할 수 있음
단점
- 데이터 손실 가능성: 스냅샷 간격 사이의 데이터 변경 사항이 손실될 수 있음
- IO 부하: 큰 데이터베이스를 덤프할 때 디스크 IO 부하가 발생할 수 있음
AOF (Append-Only File)
- AOF는 모든 쓰기 명령을 순차적으로 기록하여 데이터를 저장
- 이 방식은 데이터 변경이 발생할 때마다 해당 변경사항을 파일에 추가
특징
- 순차적 기록
- 모든 쓰기 명령이 로그 파일에 순차적으로 추가
- 파일이 커지면 주기적으로 압축
- 실시간 복구
- 데이터를 거의 실시간으로 기록하여 복구할 때 매우 세밀한 시간 단위까지 데이터를 복원할 수 있음
- 데이터 일관성
- 모든 쓰기 명령이 저장되기 때문에 재시작 시점에서 완전한 데이터 일관성을 제공
장점
- 데이터 무결성: 거의 실시간으로 데이터를 기록하기 때문에 데이터 손실이 최소화됨
- 유연한 설정: 기록 빈도를 조절하여 데이터 손실 가능성과 성능을 균형 있게 맞출 수 있음
- 명령 기반 복구: AOF 파일을 읽어 들이면서 명령어 단위로 데이터를 복원하므로, 데이터의 정확한 상태를 복구할 수 있음
단점
- 파일 크기: RDB보다 파일 크기가 커질 수 있음
- 복구 속도: 많은 명령을 순차적으로 실행해야 하므로 복구 시간이 더 오래 걸릴 수 있음
- 성능 부하: 모든 쓰기 작업이 디스크에 기록되므로 성능 부하가 증가할 수 있음
RDB와 AOF의 비교
특징 | RDB | AOF |
저장방식 | 주기적인 전체 스냅샷 | 모든 쓰기 명령 순차 기록 |
복구속도 | 빠름 | 비교적 느림 |
데이터 일관성 | 복구 시점의 일관성 | 명령어 단위의 일관성 |
파일 크기 | 작음 | 큼 |
성능 부하 | 주기적 IO 부하 | 지속적인 IO 부하 |
데이터 손실 가능성 | 있음 (스냅샷 간격 사이 데이터 손실) | 최소화 (거의 실시간 기록) |
정리
- RDB: 데이터베이스가 큰 경우, 데이터 변경 빈도가 낮은 경우, 복구 속도가 중요한 경우
- AOF: 데이터 변경 빈도가 높고 데이터 손실을 최소화해야 하는 경우, 실시간 데이터 기록이 필요한 경우
Redis는 이러한 두 가지 방식을 혼합하여 사용하는 것도 가능하다. 예를 들어, AOF를 주 데이터 복구 수단으로 사용하면서, RDB를 백업 목적으로 사용하여 데이터 복구 시 더 나은 성능과 안전성을 제공할 수 있다.
반응형