redis

redis 고가용성을 위한 백업

끄적끄적 2022. 4. 13. 22:36

redis의 디스크 고가용성 구성(백업)은 AOF(Append Only File)과 RDB(Snapshot) 방식이 있다.

AOF방식은 명령이 실행될 때마다 text 파일에 추가하는 방식이며, RDB방식은 특정간격마다
메모리 내용을 스냅샷 형태로 디스크에 바이너리로 전체로 남긴다.
업계에서는 AOF가 예기치 않은 종료시 손실이 적고 실시간 성능에 영향이 적어서 많이 사용한다.

■ RDB

  • 직접적인 저장명령(SAVE, BGSAVE)이 있거나 자동(conf파일에 save) 설정에 따라 저장한다.
  • reds.conf에 save 설정을 넣어두면 일정 조건시 RDB파일을 저장하면서 지연의 사유가 된다.
  • SAVE로 저장하면 main process가 저장하여 저장중에 변경이 안되고, BGSAVE는 별도 process를 fork하는 방식이라 쓰기 작업중에도 저장을 수행하나 메모리를 추가로 한벌 더 사용한다.
  • 바이너리 파일이므로, 서버 복구시 로딩이 빠르다는 장점이 있으나, appendonly(AOF) 설정이 켜져 있으면 RDB파일을 읽지 않는다.
  • Slave 접속시 RDB파일을 생성하여 동기화 수행

 

 AOF

  • redis에 변경이 발생하면, 우선 AOF버퍼에 기록된 후 fsync작업(실제 파일에 기록)을 통해 파일에 저장
  • fsync 주기를 always, everysec, no(OS가 알아서, 약 30sec) 형태로 설정가능
  • 특정 사이즈(조건)이상이 되면, rewrite를 통해 파일을 재구성하고, 다시 씀
  • no-appendfsync-on-rewrite 옵션을 통해 rewrite시에 fsync를 하지않을지를 설정할 수 있다. 기본값은 no지만 yes를 권장
  • aof-use-rdb-preamble 옵션이 켜져 있으면, aof파일을 rewrite 할때 바이너리로 저장하고, 이후 내용을 text로 저장한다. 실제로 rewrite된 aof파일을 열어보면, 앞부분은 바이너리로 저장되어 있고, 이후 데이터는 text인 것을 볼 수 있다.

 

반응형