DB

[Redis] 백업과 장애 복구 (AOF 방식)

Raconer 2024. 3. 10. 00:29
728x90

AOF(Append Only File)을 사용한 백업

  • 모든 쓰기 요청에 대한 로그를 저장
  • 재시작 시 AOF에 기록된 모든 동작을 재수행해서 데이터를 복구

장점

  • 모든 변경사항이 기록되므로 RDB방식 대비 안정적으로 데이터 백업 가능
  • AOF 파일은 append-only(명령어가 저장된) 방식이므로 백업 파일이 손상될 위험이 적음
  • 실제 수행된 명령어가 저장되어 있으므로 사람이 보고 이해할 수 있고 수정도 가능
    • 마지막에 flushAll을 사용하여 데이터가 손실되었다면 flushAll을 제거후 실행해야 한다.

단점

  • RDB 방식보다 파일 사이즈가 커짐
  • RDB 방식 대비 백업&복구 속도가 느림(백업 성능은 fsync정책에 따라 조절가)

AOF 설정

# AOF 사용(Default NO)
appendonly yes

# AOF 파일 이름
appendfilename appendonly.aof

# fsync 정책 설정(always, everysec, no)
appendsync everysec

fsync 정책(appendfsync 설정 값)

  • fsync() 호출은 OS에게 데이터를 디스크에 쓰도록 함
  • 가능한 옵션과 설명
    • always : 새로운 커맨드가 추가될 때마다 수행. 가장 안전하지만 느림
    • everysec : 1초마다 수행. 성능은 RDB수준에 근접
    • no : OS에 맡김. 가장 빠르지만 덜 안전한 방법(커널마다 수행시간이 다를 수 있음)

AOF 관련 개념

  • Log rewriting : 최종 상태를 만들기 위한 최소한의 로그만 남기기 위해 일부를 새로 씀
    • ex) 1개의 Key값을 100번 수정해도 최종 상태는 1개 이므로 SET 1개로 대체가능
  • Multi Part AOF
    • Redis 7.0부터 AOF가 단일 파일에 저장되지 않고 여러개가 사용됨
    • base file : 마지막 rewrite시의 스냅샷을 저장
    • incremental file : 마지막으로 base file이 생성된 이후의 변경사항이 쌓임
    • manifest file : 파일들을 관리하기 위한 메타 데이터를 저장
728x90

'DB' 카테고리의 다른 글

[Redis] Redis Sentinel  (0) 2024.03.10
[Redis] 레디스의 복제  (0) 2024.03.10
[Redis] 백업과 장애 복구 (RDB 방식)  (0) 2024.03.07
[Redis] Pub/Sub을 이용한 채팅방 구현  (0) 2024.03.01
[Redis]리더 보드란?  (0) 2024.03.01