Redis 데이터 관리

2023. 7. 19. 16:33· DataBase/Redis
목차
  1. 데이터 관리
  2. RDB vs AOF 비교
  3. RDB 설정
  4. 1. RDB 관련 옵션
  5. 2. RDB 성능 관련 옵션
  6. AOF 설정
  7. 1. AOF 관련 옵션
  8. 2. AOF 성능 관련 옵션 정리
  9. RDB, AOF 정보 확인 방법
728x90

redis logo

데이터 관리

  • Redis는 데이터가 메모리에 있기 때문에 OS 리부팅이 일어나면 데이터가 모두 유실됨
  • 데이터를 영구적으로 저장하고 싶으면 디스크에 데이터를 write 해야 함
  • 디스크에 write 하는 방식은 AOF(Append Only File), RDB(Snapshot) 두 가지 존재
  • AOF 설정 시 Redis는 AOF 파일을 먼저 읽음

RDB vs AOF 비교

항  목 RDB AOF
특  징 1. 특정 시점의 메모리에 있는 데이터 전체를 바이너리 파일로 저장
2. AOF 파일 보다 사이즈가 작으며, 로딩 속도가 AOF보다 빠르다
3. 환경설정 save를 통해 저장 주기를 정할 수 있다
4. 자식 프로세스를 생성하여 디스크 쓰기를 수행할수 있다. 따라서 부모 프로세스에 명령을 처리하는데 영향을 주지 않지만 디스크 I/O가 발생하며 CPU IOwait이 높게 나타난다
1. 명령이 실행될 때마다 기록 된다.(조회 명령은 제외)
2. 명령이 실행될 때마다 기록이 되어 데이터 손실이 적다.
3. AOF는 계속 추가하면서 기록되기 때문에 파일 사이즈가 계속 커진다.
4. AOF 파일은 text 파일이므로 수정이 가능하다.
성능  영향도 1. RDB는 fork()를 자주 수행
2. 데이터 크기가 크면 fork() 수행 시 많이 걸릴 수 있으며, CPU 사용률이 높은 경우 서비스 장애 발생할 수있다.
1. OS 파일 사이즈 제한으로 인해 기록이 중단 될 수 있다.
2.  Redis Booting 시간 지연이 발생할 수 있다.
업무 고려사항 1. 데이터 영속성이 중요한 경우는 AOF 설정
2. Client로 부터 받는 명령을 정상 처리하는 것이 중요하면 RDB 설정
3. 일반적으로는 AOF를 기본으로 하고, RDB를 Option으로 사용하는 것을 권고

RDB 설정

1. RDB 관련 옵션

옵  션 설  명
save 저장 주기를 설정하는 옵션
stop-writes-on-bgsave-error RDB 파일 저장 실패 했을 경우 데이터를 받아 들일지 말지 정하는 옵션
rdbcompression RDB 파일을 저장할 때 LZF 방식으로 압축할지 정하는 옵션
rdbchecksum RDB 파일이 정확히 저장되었는지 확인하는 방법으로 checksum을 파일 끝에 추가하는 옵션
dbfilename RDB 파일명을 지정, 디렉토리는 dir 옵션에 지정하는 곳에 저장됨
rdb-save-incremental-fsync RDB 파일을 쓸 때 disk에 쓰는 fsync를 32mb씩 나누어서 저장

2. RDB 성능 관련 옵션

SAVE

  • 저장 주기는 시간과 변경된 데이터 개수로 설정
  • 설정 예시
$cd {REDIS_HOME}/conf/[port].conf 파일에서 설정

save 60 10000 //60초 안에 만개 이상 데이터가 변경되면 저장 된다.
save 300 10 //300초 안에 10개 이상 데이터가 변경되면 저장 된다.
  •  고려사항
    데이터 변경이 많이 발생하는 경우 파일 저장 시간을 고려하여 설정
    예를 들어, 데이터 크기가 20G이고 저장하는데 2분이 걸리고, 60초에 1만 개 이상 데이터가 변경된다면 Redis 서버는 60초마다 RDB 파일을 저장함. 이전에 시작한 저장이 끝나지 않은 상태에서 다음 저장 이벤트가 발생하여 성능 저하가 될 수 있다.

stop-writes-on-bgsave-error

  • 기본 값은 yes이며, 데이터를 받아들이지 않는 설정
  • 설정 예시
$cd {REDIS_HOME}/conf/[port].conf 파일에서 설정

stop-writes-on-bgsave-error yes
  • 고려사항
    모니터링이 잘되어 있고, 서비스가 중요한 경우 no 권고
    yes로 설정하는 경우 장애 발생 시점을 파악할 수 있으나 서비스 중단이 발생

rdbcompression

  • RDB 파일을 저장할 때 LZF 방식으로 압축할지 정리하는 옵션
  • 설정 예시
$cd {REDIS_HOME}/conf/[port].conf 파일에서 설정

rdbcompression yes
  • 고려사항
    설정 시 디스크 저장 공간 활용 측면에서 유리 하나, 압축 시 CPU를 사용하기 때문에 CPU 사용률이 높은 경우 no를 권고

rdbchecksum

  • RDB파일이 정확히 저장되었는지 확인하는 방법으로 checksum을 파일 끝에 추가하는 옵션
  • 설정 예시
$cd {REDIS_HOME}/conf/[port].conf 파일에서 설정

rdbchecksum yes
  • 고려 사항
    설정 시, 파일 정확을 높일 수 있다. 하지만 파일 저장할 때, 로딩할 때 서버 성능 저하가 될 수 있음

rdb-save-incremental-fsync

  • RDB 파일을 쓸 때 disk에 쓰는 fsync를 32mb씩 나누어서 함
  • Appendfsync가 everysec일 때, 디스크를 나누어서 사용함으로써, 1초마다 발생하는 AOF File 디스크 쓰기에 문제가 없도록 하기 위해 설정
  • 설정 예시
$cd {REDIS_HOME}/conf/[port].conf 파일에서 설정

Rdb-save-incremental-fsync yes

AOF 설정

1. AOF 관련 옵션

옵  션 설  명
appendonly AOF를 사용하지 여부를 정하는 옵션
appendfilename AOF 파일명을 정하는 옵션
appendfsync AOF 파일에 데이터가 쓰여지는 시점을 정하는 옵션
no-appendfsync-on-rewrite 파일에 대량에 데이터를 쓰는 동안 fsync() 수행 여부를 정하는 옵션
auto-aof-rewrite-percentage AOF파일 크기가 지정한 값 만큼 증가했으면 다시 쓰기를 수행 하는 옵션
auto-aof-rewrite-min-size AOF파일 크기가 설정한 값이상이 되어야 다시 쓰기를 수행하는 옵션
aof-load-truncated AOF파일이 손상된 경우 redis가 로그를 남기고 정상적으로 시작할지, 오류를 남기고 중단할 지 결정하는 옵션
aof-rewrite-incremental-fsync AOF파일을 rewrite할 때 disk에 쓰는 fsync를 32mb씩 나누어서 하는 옵션
aof-use-rdb-preamble AOF파일을 rewrit하면 AOF 파일을 RDB format으로 사용하는 옵션

2. AOF 성능 관련 옵션 정리

appendfsync

  • 옵  션
옵  션 설  명
always redis 명령이 실행될 때 마다 디스크에 쓴다.
everysec 데이터를 모아서 1초 마다 디스크에 쓴다.
no 디스크 쓰는 시점을 OS에 맡긴다. (리눅스 시스템은 default 30초)
  • 설정 예시
$cd {REDIS_HOME}/conf/[port].conf 파일에서 설정

Appendfsync everysec
  • 고려 사항
    always는 데이터를 유실할 위험이 적으나, 성능이 떨어지고, everysec는 1초 마다 디스크에 쓰기 때문에 최대 2초이내의 데이터를 유실할 수 있으나 성능과 보존 양 측면에서 적절한 값이다

no-appendfsync-on-rewrite

  • default 값은 no이며, no 설정 시 대량 쓰기 동안 fsync()를 수행
  • 설정 예시
$cd {REDIS_HOME}/conf/[port].conf 파일에서 설정

no-appendfsync-on-rewrite no
  • 고려 사항
    no설정 시 서비스 응답시간이 늦어서 문제가 발생하는 경우 yes 옵션 설정 고려 

auto-aof-rewrtie-percentage, auto-aof-rewrite-min-size

  • AOF파일 rewrite하는 시점 결정
  • 설정 예시
$cd {REDIS_HOME}/conf/[port].conf 파일에서 설정

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
  • 고려 사항
    해당 옵션 없을 시, AOF 파일은 1개 파일에 계속 쌓이게 되고 리눅스 파일 크기 제한에 걸려 기록이 안되거나, Redis 시작 시 AOF파일을 읽어드리는데 오래 걸려 위 옵션 설정 고려 필요

aof-rewrite-incremental-fsync

  • default 값은 yes 이며, fsync를 32mb씩 나누어서 사용
  • 설정 예시
$cd {REDIS_HOME}/conf/[port].conf 파일에서 설정

aof-rewrite-incremental-fsync yes
  • 고려 사항
    yes설정 시 대량 디스크 쓰기로 발생할 수 있는 문제를 피할 수 있음

aof-use-rdb-preamble

  • AOF 파일 rewrite 하면 RDB Format으로 기록
  • 설정 예시
$cd {REDIS_HOME}/conf/[port].conf 파일에서 설정
aof-use-rdb-preamble yes
  • 고려 사항
    AOF 파일 사이즈를 줄이고, AOF 파일에 쓰기/읽기 시간을 줄여 사용하기 원하는 경우 yes로 설정. Binary로 기록되기 때문에 편집은 불가 

RDB, AOF 정보 확인 방법

  • 명령어 'redis-cli -h [ip주소] -p [port]' 접속 하여, 명령어 'info persistence'로 확인
  • 주요 항목
항  목 설  명
rdb_last_bgsave_status 마지막 저장이 성공인지 실패인지 확인
rdb_last_bgsave_time_sec 마지막 저장 소요 시간을 확인
rdb_bgsave_in_progress RDB 파일 백그라운드 저장 진행중이며 1로 표시
aof_enabled AOF 사용 여부 확인
aof_last_write_status AOF 파일 마지막 저장이 성공인지 실패인지 확인
aof_rewrite_in_progress AOF 파일 rewrite가 진행중인지 확인
728x90
저작자표시 비영리 변경금지 (새창열림)

'DataBase > Redis' 카테고리의 다른 글

Redis Spring 연동 및 사용  (0) 2023.07.20
Redis 설정(Security, Client, Memory)  (0) 2023.07.20
Redis 설정(GENERAL)  (0) 2023.07.12
Redis 설정(NetWork)  (0) 2023.07.12
Benchmark  (0) 2023.07.10
  1. 데이터 관리
  2. RDB vs AOF 비교
  3. RDB 설정
  4. 1. RDB 관련 옵션
  5. 2. RDB 성능 관련 옵션
  6. AOF 설정
  7. 1. AOF 관련 옵션
  8. 2. AOF 성능 관련 옵션 정리
  9. RDB, AOF 정보 확인 방법
'DataBase/Redis' 카테고리의 다른 글
  • Redis Spring 연동 및 사용
  • Redis 설정(Security, Client, Memory)
  • Redis 설정(GENERAL)
  • Redis 설정(NetWork)
JOTAN
JOTAN
기술 블로그
조탄 기술블로그기술 블로그
JOTAN
조탄 기술블로그
JOTAN
전체
오늘
어제
  • 목 록
    • Security
    • WEB
      • WebtoB
      • Apache
      • Nginx
    • WAS
      • Tomcat
      • JEUS
      • Wildfly
    • Observability
      • Fluentd
    • CI CD
    • DataBase
      • Redis
      • PostgreSQL
      • Victoria Metrics
    • Container Registry
      • Harbor
    • Docker
    • Kubernetes
    • Message Queue
      • Kafka
    • 개발
      • Spring Boot
      • Java
      • Shell Script
    • 기본지식
    • OS
      • Debian
      • Red Hat

블로그 메뉴

  • 홈

공지사항

  • 조'S IT 영역

인기 글

태그

  • kubernetes install
  • Jboss
  • Redis Cache
  • redis 설정
  • Datasource 모니터링
  • 레디스 설정
  • WAS 연동
  • redis
  • webtob
  • apache
  • 인증서
  • PostgreSQL
  • 설치
  • Kubernetes
  • Wildfly Session Clustering
  • apache ssl 설정
  • 레디스
  • wildfly
  • nginx
  • KAFKA
  • tomcat
  • 쿠버네티스 설치
  • Redis TEST
  • harbor
  • fluentd
  • 쿠버네티스
  • jboss session clustering
  • wildfly14
  • SSL
  • Redis 기능 검증

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
JOTAN
Redis 데이터 관리
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.