일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- WebView
- psql
- 취미
- window
- docker
- 도커
- 스쿠버다이빙
- PostgreSQL
- 야생의숨결
- 공략
- 엘든링
- Angular
- 여행
- 젤다의전설
- 씨홀스
- Linux
- 어드벤스
- 게임
- 개발툴
- 세부
- guide
- 오픈워터
- hybride
- Front-end
- 뱀파이어서바이벌
- 다이빙
- ubuntu
- JavaScript
- window10
- JS
- Today
- Total
Rianshin
[Redis] RDB 방식의 백업 본문
Redis RDB 백업 개념
Redis 는 백업을 위해 RDB 방식과 AOF 방식을 지원합니다.
이 중 RDB 방식에 대해 다뤄보겠습니다.
RDB 방식
RDB는 특정 시점의 메모리에 있는 데이터 전체를 바이너리 파일로 저장하는 방식입니다.
바이너리 파일로 저장되기 때문에 사람이 읽을 수 없습니다.
AOF 파일보다 사이즈가 작아 레디스 시작시 AOF 파일보다 빨리 로드할 수 있습니다.
RDB 파일
기본값으로 dump.rdb 파일에 기록됩니다.
RDB 저장시점
redis.conf 파일에서 save 파라미터로 저장 시점을 정할 수 있습니다.
RDB 를 저장하지 않기 위해서는 save 명령어를 주석처리 하면 됩니다.
RDB 저장 방법
SAVE 혹은 BGSAVE 명령어로 RDB 를 저장합니다.
SAVE 명령 시 레디스에서는 클라이언트 요청을 받지 못합니다.
BGSAVE 명령 시 자식 프로세스에서 백그라운드로 수행하기 때문에 클라이언트 요청을 처리할 수 있습니다.
RDB 관련 redis.conf 파라미터
redis.conf 파일에서 RDB 관련 파라미터를 설정할 수 있습니다.
save [ time ], [ count ]
RDB 저장 시점을 지정할 수 있습니다.
time 동안 count 만큼의 key 변경이 발생하면 rdb 파일로 저장됩니다.
save 조건은 여러 개를 지정할 수 있으며, 지정한 조건 중 하나라도 만족하면 저장됩니다.
dbfilename [ filename ]
RDB 파일명을 지정합니다.
파일경로는 지정할 수 없으며 working directory 파라미터 값으로 결정됩니다.
stop-writes-on-bgsave-error [ yes | no ]
yes 일 때, RDB 파일을 작성하다 실패하면 이후 모든 쓰기 요청을 막습니다.
no 일 때 RDB 파일을 작성하다 실패해도 레디스는 모든 동작을 정상적으로 처리합니다.
이 파라미터는 SAVE 명령시에만 적용되며, BGSAVE 에서는 적용되지 않습니다.
rdbcompression [ yes | no ]
RDB 파일을 작성할 때 압축 여부를 결정합니다. 압축 알고리즘은 LZF 입니다.
rdbchecksum [ yes | no ]
RDB 파일 끝에 Checksum 값 기록 여부를 설정합니다.
rdb-save-incremental-fsync [ yes | no ]
RDB 파일을 쓸 때 fsync 를 32mb 씩 나누어서 진행합니다.
이 부분은 AOF 방식을 병행하여 사용할 때 디스크를 나누어 사용함으로 써, 1초마다 발생하는 AOF File 디스크 쓰기가
문제가 없도록 하기 위해서 입니다.
RDB SAVE 저장 동작 순서
1. 메인프로세스에서 메모리에 있는 데이터를 새 RDB temp 파일에 작성합니다.
2. 작성이 완료되면 기존 파일을 지우고 새 파일로 교체합니다.
RDB BGSAVE 저장 동작 순서
1. 자식프로세스를 포크합니다.
2. 자식 프로세스는 데이터를 새 RDB temp 파일에 작성합니다.
3. 작성이 완료되면 기존 파일을 지우고 이름을 변경합니다.
RDB SAVE 혹은 BGSAVE 시 로그
SAVE 혹은 BGSAVE 를 하면 로그파일에 아래와 같은 내용이 기록됩니다.
예) BGSAVE 명령어
1
2
|
127.0.0.1:6379> BGSAVE
Background saving started
|
cs |
SAVE 시 로그
1
|
4085:M 05 Mar 2020 18:05:49.904 * DB saved on disk
|
cs |
Line 1 : RDB 파일이 디스크에 저장되었습니다.
BGSAVE 시 로그
1
2
3
4
|
4085:M 05 Mar 2020 17:57:38.615 * Background saving started by pid 4091
4091:C 05 Mar 2020 17:57:38.626 * DB saved on disk
4091:C 05 Mar 2020 17:57:38.626 * RDB: 0 MB of memory used by copy-on-write
4085:M 05 Mar 2020 17:57:38.714 * Background saving terminated with success
|
cs |
Line 1 : RDB 를 작성할 4091 자식프로세스가 생성되었습니다.
Line 2 : RDB temp 파일을 작성 완료하였습니다.
Line 3 : Copy On write 에서 사용된 메모리가 RDB 파일에 반영되었습니다.
Line 4 : RDB 작성이 성공적으로 완료되었습니다.
RDB 관련 Redis persistence 파라미터
info persistence 명령어로 rdb 관련값을 확인할 수 있습니다.
1
2
3
4
5
6
7
8
|
127.0.0.1:6379> info persistence
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1583398658
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:237568
|
cs |
rdb_changes_since_last_save
마지막 저장 후 변경된 키 수
rdb_bgsave_in_progress
현재 RDB 가 진행중임을 나타냅니다.
rdb_last_save_time
지난번 RDB 파일 저장 시간을 나타냅니다.
rdb_last_bgsave_status
RDB 파일 저장 성공 여부를 나타냅니다.
rdb_last_bgsave_time_sec
RDB 파일 저장에 걸린 시간을 나타냅니다.
rdb_current_bgsave_time_sec
RDB 파일 저장 후 현재까지 경과된 시간을 나타냅니다.
rdb_last_cow_size
RDB 작업 시 복사 할당 크기를 나타냅니다. (byte)
'Develop' 카테고리의 다른 글
Redis dump.rdb import(for mac) (0) | 2022.11.22 |
---|---|
Window PC에서 애플 앱스토어 확인법 (0) | 2022.05.04 |
[개념정리]Redis란? (0) | 2022.03.02 |
실행중인 Redis 재시작 및 DB변경 (0) | 2022.03.02 |
개발의 효율을 높이는 사이트 정리 (0) | 2022.02.25 |