본문 바로가기

좋아하는 것_매직IT/9.redis

34.Redis, 레디스의 AOF(Append Only File)에 대해서 알아보자구요! ^^

반응형

AOF(Append Only File) 이란?

  • Redis 에서 데이터의 영구 저장을 위하여 지원하는 두번째 기능.
  • Redis 가 수신하는 모든 쓰기 명령을 aof 파일에 기록하여 데이터를 보관함.
    • 알기쉽게 말하면, MySQL 의 bin 로그와 유사하다고 보면됨.
  • AOF 파일은 수정이나 삭제가 필요 없으며 명령어를 파일의 마지막에 기록할 뿐이므로, 데이터의 정합성 유지에 용이함.
  • Redis 관련 시스템 장애시 마지막 명령의 기록이 완전하지 않을 경우에는 Redis가 제공하는 redis-check-aof 툴을 사용하여 aof파일의 잘못된 부분을 고칠 수 있는 기능 지원.
  • flushall 명령과 같은 잘못 전달된 명령에 의하여 데이터를 완전히 잃어버리는 사태를 방지할 수 있음.
    • 즉, 만약 데이터가 삭제되었으면, 기존 Redis 서버를 잠시 중지시키고, aof 파일을 열어서 마지막에 기록된 flushall 명령을 제거하고 Redis를 다시 시작하면 됨.
  • AOF 파일은 스냅샷에 비해서 더 많은 디스크 용량을 차지함.
  • 모든 명령어를 일일이 파일에 기록하므로 스냅샷에 비하여 더 느린 응답시간을 제공함.
    • 느리다는 것은 스냅샷에 비해서 상대적으로 느리다는 말이니, 오해하시지 않기를..
      • 통상적으로 AOF 는 스냅샷에 비하여 평균적으로 약 5~10% 정도의 응답시간 저하가 있을 수 있음.
    • 즉, 느리다고 매우 큰 성능 저하가 일어나는 것은 아님.

AOF와 스냅샷 정합성 비교

  • 예전에 설명드린 스냅샷에 비해 더 나은 데이터 정합성을 보장함.
    • 스냅샷은 각 스냅샷 사이의 데이터를 잃어버리지만, AOF는 최악의 상황에서 마지막 1초의 데이터만을 잃어 버리기 때문에..

AOF 파일 구조

  • AOF 파일 구조를 아래 테스트를 통해서 알아보자.
    • 하나, Redis 설정에 appendonly 설정을 yes 로 하여 Redis 실행.
      • redis.conf 에서 아래 와 같이 환경설정 수정 후 재기동
    • 둘, Redis 클라이언트에서 아래 명령을 실행
      • redis> set tkey1 "thub.magic" / get tkey1
          • 위의 appendonly.aof 파일의 내용은 이전에 설명해드린, Redis 프로토콜 데이터 파일과 동일함. 
            • 다시말해서 aof 파일은 레디스 명령어를 Redis 프로토콜형식으로 저장하고 Redis 가 재시작할 때 다시 동일한 명령어를 실행하여 데이터의 정합성을 유지하게 됨.
              • 기동시 모든 명령어를 다시 실행하기 때문에 상대적으로 스냅샷에 비하여 데이터 로드 시간이 오래 걸림.

결론

  • Redis는 AOF(Append Only File)라는 기능을 제공해서 데이터 백업을 할 수 있는 기능을 지원함.
    • 유사시에 이 기능으로 인해 시스템 서버장애 발생 시 데이터가 유실되는 부분을 차단하고 복원함.
  • Redis는 AOF 는 모든 명령어를 일일이 파일에 기록하므로 스냅샷에 비하여 더 느린 응답시간을 제공함.
  • 금일도 Redis AOF 기능에 대한 마술(?) 한가지 획득완료, 감사합니다. ^^

  • 오늘의 명언 한마디
    • "지금 가진 것에 만족하면 하던일이나 계속하라."
      • 무슨뜻이냐고? 멈추라는 말이다! 지금 부자가 아니라면, 현재 하고 있는 일을 그만둬라.
    • 전통적 방식으로 돈 버는 지혜를 버려라.
    • 사람들을 따라 하고 틀린 방법을 계속해서 적용하는 일을 그만둬라.
    • 꿈을 제쳐두고 평범한 삶으로 나아가는 길에서 벗어나라.
    • 한마디로, 당신은 이제까지 배운 것을 잊어야 한다. 
      • 엠제이 드마코 지음, "부의 추월차선" 중에서

  • 오늘의 영어 한마디
    • 질문) Are you interested in this?
      • 이런 것에 흥미 있어?
    • 응답) Sure. I am!
      • 물론이지.
    • 해설
      • "be interested in" 은 ~에 흥미가 있다.라는 의미.
      • 위의 물론은 Of course. 라고 해도됨.
      • 위의 "Are you interested ~?" 구문은 "~해보고 싶어?" 또는 " 더 알고 싶어?", " 좋아해?" 라는 의미로도 해석할 수 있음.
728x90
300x250