1. 개요
성능 향상을 위해 속도가 빠른 메모리 기반 DB인 Redis를 사용한다.
Redis는 데이터를 메모리에 저장하기 때문에 서버에 장애가 발생하거나 강제 종료될 경우 데이터가 모두 소실될 위험이 있다.
하지만 Redis는 설정에 따라 데이터를 디스크에 저장하여 어느 정도 영속성을 확보할 수 있다.
Redis가 제공하는 데이터 저장 방식에는 RDB와 AOF 방식이 있으며, 각각의 방식을 알아보도록 하겠다.
2. RDB(Redis Database) 방식
RDB 방식은 주기적으로 Redis의 전체 데이터를 스냅샷 형태로 저장하는 방식이다.redis.conf(설정파일)에서 주기와 조건을 설정할 수 있다.
장점
- 서버가 재시작해도 최근 스냅샷 시점까지의 데이터는 복구 가능하여 데이터 손실을 최소화한다.
- 스냅샷 파일은 압축된 형태로 저장되어 파일크기가 AOF 방식에 비해 작음
- 스냅샷이 완료되면 추가적인 데이터 쓰기 잘업이 없어 성능에 영향을 덜 끼침.
단점
- 마지막 스냅샷 이후의 데이터는 복구할 수가 없다.
- 스냅샷 시점 일시적으로 성능 저하.
redis.conf
# 스냅샷 주기 및 조건 설정
# 900초(15분) 동안 1개 이상의 키가 변경되면 스냅샷 저장
save 900 1
# 300초(5분) 동안 10개 이상의 키가 변경되면 스냅샷 저장
save 300 10
# 60초 동안 10000개 이상의 키가 변경되면 스냅샷 저장
save 60 10000
# RDB 파일 이름
dbfilename dump.rdb
# 스냡샷 저장 위치
dir /data
3. AOF(Append Only File) 방식
AOF 방식은 모든 쓰기 작업을 순차적으로 파일에 기록하여 영속성을 유지한다. 즉 AOF 파일에 모든 명령을 순차적으로 실행시켜 데이터를 복구하는 방식이다.
장점
- 모든 데이터 변경이 즉시 반영되어, RDB 방식보다 데이터 손실 가능성이 낮다.
단점
- 모든 쓰기 작업을 기록하므로, RDB 방식보다 파일 크기가 크다.
- 디스크에 I/O 작업이 빈번하게 발생하므로 성능 저하가 발생함.
redis.conf
# AOF(Append Only File) 설정
# AOF 기능 활성화(default는 no)
appendonly yes
# AOF 파일 이름
appendfilename "appendonly.aof"
# AOF 동기화 주기 설정
# option
# - always: 모든 쓰기 작업에 동기화
# - everysec: 1초마다 동기화
# - no: os에 위임
appendfsync everysec
4. 다른 서버로 데이터 복원
다른 서버에 redis 데이터를 옮겨야 하는 경우도 있을 것이다. 단순하게 스냅샷 파일(dump.rdb)이나 AOF 파일을 다른 서버로 복사한 다음 redis 서버를 재시작하면 복원이 된다.
scp dump.rdb user@new-server:/path/to/redis/data/
scp appendonly.aof user@new-server:/path/to/redis/data/
주의할 점은 AOF 모드에서는 dump.rdb 파일이 아닌 appendonly.aof 파일을 옮겨야 한다.
AOF 모드에서는 aof 파일을 읽기 때문에 dump.rdb 파일만 옮길 경우 데이터 복원이 안되는 경우가 발생한다.
5. 정리
RDB모드와 AOF모드의 선택 기준에 대해서 정리해보면,
데이터 영속성 및 안정성보다 성능을 중요시하는 경우에는 RDB 모드로 백업을 진행하고, 데이터의 안정성, 영속성이 중요한 환경에서는 AOF 모드를 사용하는 것이 좋다.
'Data Infra > Redis' 카테고리의 다른 글
[Redis] dnf(yum) 으로 redis.3.2.12(구버전) 설치 (1) | 2024.09.11 |
---|---|
[Redis] Redis 기본 정리 (0) | 2023.09.24 |
1. 개요
성능 향상을 위해 속도가 빠른 메모리 기반 DB인 Redis를 사용한다.
Redis는 데이터를 메모리에 저장하기 때문에 서버에 장애가 발생하거나 강제 종료될 경우 데이터가 모두 소실될 위험이 있다.
하지만 Redis는 설정에 따라 데이터를 디스크에 저장하여 어느 정도 영속성을 확보할 수 있다.
Redis가 제공하는 데이터 저장 방식에는 RDB와 AOF 방식이 있으며, 각각의 방식을 알아보도록 하겠다.
2. RDB(Redis Database) 방식
RDB 방식은 주기적으로 Redis의 전체 데이터를 스냅샷 형태로 저장하는 방식이다.redis.conf(설정파일)에서 주기와 조건을 설정할 수 있다.
장점
- 서버가 재시작해도 최근 스냅샷 시점까지의 데이터는 복구 가능하여 데이터 손실을 최소화한다.
- 스냅샷 파일은 압축된 형태로 저장되어 파일크기가 AOF 방식에 비해 작음
- 스냅샷이 완료되면 추가적인 데이터 쓰기 잘업이 없어 성능에 영향을 덜 끼침.
단점
- 마지막 스냅샷 이후의 데이터는 복구할 수가 없다.
- 스냅샷 시점 일시적으로 성능 저하.
redis.conf
# 스냅샷 주기 및 조건 설정
# 900초(15분) 동안 1개 이상의 키가 변경되면 스냅샷 저장
save 900 1
# 300초(5분) 동안 10개 이상의 키가 변경되면 스냅샷 저장
save 300 10
# 60초 동안 10000개 이상의 키가 변경되면 스냅샷 저장
save 60 10000
# RDB 파일 이름
dbfilename dump.rdb
# 스냡샷 저장 위치
dir /data
3. AOF(Append Only File) 방식
AOF 방식은 모든 쓰기 작업을 순차적으로 파일에 기록하여 영속성을 유지한다. 즉 AOF 파일에 모든 명령을 순차적으로 실행시켜 데이터를 복구하는 방식이다.
장점
- 모든 데이터 변경이 즉시 반영되어, RDB 방식보다 데이터 손실 가능성이 낮다.
단점
- 모든 쓰기 작업을 기록하므로, RDB 방식보다 파일 크기가 크다.
- 디스크에 I/O 작업이 빈번하게 발생하므로 성능 저하가 발생함.
redis.conf
# AOF(Append Only File) 설정
# AOF 기능 활성화(default는 no)
appendonly yes
# AOF 파일 이름
appendfilename "appendonly.aof"
# AOF 동기화 주기 설정
# option
# - always: 모든 쓰기 작업에 동기화
# - everysec: 1초마다 동기화
# - no: os에 위임
appendfsync everysec
4. 다른 서버로 데이터 복원
다른 서버에 redis 데이터를 옮겨야 하는 경우도 있을 것이다. 단순하게 스냅샷 파일(dump.rdb)이나 AOF 파일을 다른 서버로 복사한 다음 redis 서버를 재시작하면 복원이 된다.
scp dump.rdb user@new-server:/path/to/redis/data/
scp appendonly.aof user@new-server:/path/to/redis/data/
주의할 점은 AOF 모드에서는 dump.rdb 파일이 아닌 appendonly.aof 파일을 옮겨야 한다.
AOF 모드에서는 aof 파일을 읽기 때문에 dump.rdb 파일만 옮길 경우 데이터 복원이 안되는 경우가 발생한다.
5. 정리
RDB모드와 AOF모드의 선택 기준에 대해서 정리해보면,
데이터 영속성 및 안정성보다 성능을 중요시하는 경우에는 RDB 모드로 백업을 진행하고, 데이터의 안정성, 영속성이 중요한 환경에서는 AOF 모드를 사용하는 것이 좋다.
'Data Infra > Redis' 카테고리의 다른 글
[Redis] dnf(yum) 으로 redis.3.2.12(구버전) 설치 (1) | 2024.09.11 |
---|---|
[Redis] Redis 기본 정리 (0) | 2023.09.24 |