🖥️ 백엔드/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를 백업 목적으로 사용하여 데이터 복구 시 더 나은 성능과 안전성을 제공할 수 있다.

 

반응형