실전 프로젝트가 모두 종료되고 지원 주차 첫날. 어제 받았던 질문 중에 Redis에 장애가 생겨 데이터가 날아갈 상황이면 어떻게 대처할꺼냐는 질문을 대답을 못했다. 그에 대한 대처로 Redis의 백업방식에 대해 알아보려 한다.
일정 시간이나 특정 수의 쓰기작업이 이루어진 후의 특정 시점의 메모리에 있는 전체 데이터를 디스크에 바이너리 형식의 스냅샷으로 저장한다.
백업과 복구에 유용하며 AOF보다 파일 사이즈가 작고 로딩속도가 빠르다.
마지막 스냅샷 이후의 데이터는 유실될 수 있다.
Redis 종료 전 자동으로 스냅샷을 저장한다. 재시작시 RDB로 복원
모든 쓰기 명령(조회 제외)에 대한 로그를 남긴다. Redis 재시작 시 실행되어 메모리 상태를 복구한다.
모든 쓰기 작업을 기록하므로 RDB에 비해 안전하다.
하지만 계속 추가되며 기록되기 때문에 파일 크기가 계속 커지고 복구시간이 더 길 수 있다.
AOF가 활성화 되었다면 RDB파일을 읽어오지 않고 AOF 파일을 읽어온다.
Flushall로 데이터를 다 날려도 aof 파일에서 그 명령어만 지우면 복원이 가능하다.
매 명령마다, 매 초마다, 특정 시점마다 정해서 AOF에 기록할 수 있따.
AOF 파일이 특정 시점에 특정 사이즈를 넘어가면 현재 메모리의 정보로 다시 AOF에 써서 사이즈를 줄일 수 있다.(ReWrite)
text 파일이므로 edit이 가능하다.
AOF와 RDB를 동시에 같이 쓸 수도 있다.
데이터 손실을 막는 목적에서는 AOF가 좋지만, 성능적으로는 RDS가 더 좋다.