본문 바로가기

카테고리 없음

Redis 백업

레디스 백업에는 RDB와 AOF두가지 방식이 존재함

 

RDB(Redis Database)

 - 일정 시간마다 전체 데이터를 디스크에 씀

 - 특정 시점에 스냅샷으로 데이터를 저장

 - 재시작 시 RDB 파일이 있으면 읽어서 복구

 

장점

 - 작은 파일 사이즈로 백업 파일 관리가 용이 (AOF보다 작음, 원격지 백업 다른곳으로 보냄, 버전관리 날짜별)

 - fork를 이용해 백업하므로 서비스중인 프로세스에는 성능에 영향이 없음

 - 데이터 스냅샷 방식이 빠른 복구가 가능 스냅샷을 메모미에 그래로 올리면 됨

 

단점

 - 스냅샷을 저장하는 시점 사이에 데이터 변경사항은 유실 될 수 있음

    - 1분마다 저장을 하더라도 59초에 장애나고 저장이 안된다면 유실될 수 있음

- fork를 이용하기 때문에 시간이 오래걸릴수 있고 CPU와 메모리 자원을 많이 소모

- 데이터 무결성이나 정합성에 대한 요구가 크지 않는 경우 사용

 

저장 주기 설정

 - save 60 10 (60초마다 10개이상의 변경이 있을때 수행)

 

수동으로 저장 

 - bssave

 

 

AOF(Append Only File)를 사용한 백업

 - 모든 쓰기 요청에 대한 로그를 작성 (set, delete)

 - 재시작 시 AOF에 기록된 모든 동작을 재수행해서 데이터를 복구

 

AOF사용의 장점

 - 모든 변경사항이 기록되므로 RDB 방식 대비 안전한 백업

 - AOF파일은 append-only방식으로 백업 파일이 손상될 위험이 적음

 - 실제 수행된 명령어가 저장되어있으므로 사람이 보고 이해할 수 있고 수정도 가능

 

AOF 단점

 - RDB보다 파일 사이즈가 커짐

 - RDB 방식 대비 백업 및 복구 속도가 느림 (백업 성능은 fsync정책에 따라 조절가능)

 

AOF 사용 (기본값은 no)

 appendonly yes

 

fsync정책 설정 (always, everysec, no)

 appnedfsync everysec

 

 - fsync() 호출은 OS에게 데이터를 디스크에 쓰도록 함

 always : 새로운 커맨드가 추가될때마다 수행, 가장 안전하지만 느림

 everysec: 1초마다 수행 성능은 RDB수준

 no : os에 맡김, 가장 빠르지만 덜 안전함(커널마다 수행시간이 달라질 수 있음)