개요
Redis는 인메모리 데이터 저장소로 휘발성 특징을 가지고 있습니다.
즉 예상치 못한 사고로 서버가 내려가면 Redis 에 있는 데이터도 소실됩니다.
이를 방지하기 위해서 Redis 는 데이터를 복구하는 기능으로 AOF 방식과 RDB 방식을 제공합니다.
이번 글에서는 AOF에 대해 공부한 내용을 정리해보겠습니다.
AOF
특징
AOF는 Append Only File 에 약자로
Redis에 데이터가 변경되는 작업(입력, 수정, 삭제)이 실행될 때 마다 로그를 저장하는 방식입니다.
Redis가 재시작할 때 AOF 파일을 순차적으로 재실행하여 데이터를 복구합니다.
AOF의 파일이 너무 커지면 현재의 데이터 상태를 반영하는 새로운 AOF 파일을 재작성 합니다.
재작성을 통해 파일의 크기를 줄이고 재실행 속도를 향상시킵니다.
장점
데이터 안정성
쓰기 작업이 이루어질 때 마다 저장하므로 데이터 손실이 적습니다.
정밀 복구
AOF는 모든 데이터를 저장하므로 최신 데이터 상태로 복구할 수 있습니다.
단점
디스크 I/O 부하
모든 쓰기 명령을 기록하므로 디스크 I/O 부하가 RDB 방식에 비해 큽니다.
느린 복구 시간
일일이 재시작 하므로 복구 시간이 길어질 수 있습니다.
AOF 흐름
AOF 사용하면 사용자가 설정한 기록 주기 마다 appendonly.aof 파일에 로그가 기록됩니다.
Redis 가 재실행되면 appendonly.aof 파일을 찾아 데이터를 복구합니다.
또한 재작성 조건을 설정하여 너무 커진 AOF 파일의 크기를 줄일 수 있습니다.
AOF 재작성
AOF 재작성이 트리거되면 Redis 백그라운드에서 새로운 AOF 파일이 생성되기 시작합니다.
현재 Redis 인스턴스에 저장된 모든 데이터를 반영하는 명령어들을 새로운 AOF 파일에 기록합니다.
예를 들어 SET key value 명령어가 여러 번 실행되었다면 재작성된 AOF 파일에는 key에 대한 최종값만 저장됩니다.
재작성이 시작된 후 발생한 모든 쓰기 명령어도 새로운 AOF 파일에 추가됩니다. 이 작업을 통해 원본 AOF 파일과 새로운 AOF 파일이 동기화 됩니다.
재작성이 완료되면 원본 AOF 파일은 새로운 AOF 파일로 대체됩니다.
이러한 재작성 과정을 통해 AOF 파일의 크기를 줄이고 불필요한 명령어들을 제거하여 복구 시간을 단축 시킬 수 있습니다.
AOF 설정
Redis의 설정 파일을 통해 AOF 설정할 수 있습니다.
window의 경우 redis.windows-service.conf 파일에서 설정할 수 있습니다.
설정 파일에 많은 명령어들과 주석 파일이 있으므로 Ctrl + F 를 통해 탐색합니다.
AOF 활성화
appendonly [yes / no]
appendonly yes
appendonly 는 기본적으로 no로 설정되어 있습니다.
yes로 바꾸면 AOF를 활성화하여 사용할 수 있습니다.
파일 이름 설정
appendfilename [이름]
appendfilename "appendonly.aof"
appendfilename 통해 원하는 이름을 설정할 수 있습니다.
주기 설정
appendfsync [옵션]
appendfsync always # 모든 연산 후에 기록
appendfsync everysec # 매 초마다 기록
appendfsync no # OS에 위임 (일반적으로 권장되지 않음)
appendfsync 명령어를 통해 얼마나 자주 AOF 파일에 데이터를 기록할지 설정할 수 있습니다.
재작성 조건 설정
auto-aof-rewrite-percentage [현재 파일 크기 비율]
auto-aof-rewrite-min-size [최소 파일 크기]
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
auto-aof-rewrite-percentage 100
AOF 파일의 크기가 마지막으로 재작성된 후 얼마나 커져야 AOF 재작성이 트리거될지 결정하는 퍼센트 값 입니다.
예를 들어, 설정값이 100이면 마지막 AOF 재작성 시 파일의 크기가 50MB 였다면 AOF 파일의 크기가 이전 크기의 100% 증가, 즉 100MB 되면 재작성이 시작됩니다.
auto-aof-rewrite-min-size
AOF 재작성 트리거하기 위한 최소 파일 크기를 지정합니다.
AOF 파일의 크기가 최소 64MB 이상이어야 재작성이 트리거 되도록 설정되어 있습니다.
auto-aof-rewrite-percentage 100 명령어에 따라 100%가 되도 64MB 이하면 재작성 되지 않습니다.
마무리
이번에는 Redis의 데이터를 복구하는 방법 중 하나인 AOF에 대해 공부하고 정리했습니다.
다음에는 다른 복구 방법 중 하나인 RDB 방법을 공부하고 정리해보겠습니다.
감사합니다.