레디 스 지속성 (RDB와 AOF)를 계속하려면

1, 레디 스 왜 지속성을 달성해야합니까?

데이터가 손실 된 후에 만 ​​레디 스 데이터가 메모리에 저장하면 다운 타임을 방지, 정전 및 기타 시나리오, 프로세스 종료 후 데이터가 손실 될, 프로세스는 종료됩니다. 지속성기구 재시작 레디 스 후의 영구 데이터 복구에 기초하여, 하드 디스크 메모리에 데이터를 유지한다.

2 영구 방식 레디 스 어느

영구적 인 방법으로 하드 디스크에 저장된 2.1 RDB, 시간 경과 스냅 샷 데이터를 처리

RDB 지속성을 유발하는 방법 2.1.1?

2.1.1.1 수동 트리거

1. [권장되지] 레디 스 저장 명령은 동기 작업을 저장, 현재 RDB 파일의 형태로 하드 디스크 레디 스 인스턴스에 저장된 모든 데이터 스냅 샷 (스냅 샷). $의 \ 색상 {빨간색} {프로세스가 방해를 일으킬 수 있습니다 오랜 시간 예를 들어 상대적으로 큰 메모리를 완료 RDB 될 때까지 현재의 레디 스 서버 차단이 명령은 온라인 환경은 사용하지 않는 것이 좋습니다. } $
다음과 같이 명령은

redis 127.0.0.1:6379> SAVE 
OK

SAVE 명령 레디 스 인스턴스를 차단하는 문제점을 해결하기 위해 [추천] 2. 레디 스 다른 명령을 제공 BGSAVE한다.
레디 스 BGSAVE 디스크에 데이터베이스의 현재 데이터를 저장하기 위해 백그라운드에서 비동기 명령.

$ \ 컬러 {빨간색} {OK 반환 즉시 실행 한 후 BGSAVE 명령은 다음 레디 스 새로운 자식 프로세스를 포크, 원래 레디 스 프로세스 (부모 프로세스) 클라이언트 요청을 처리하기 위해 계속해서, 자식 프로세스는 디스크에 데이터를 저장을 담당하고 종료합니다. } $
다음과 같이 명령은 다음과 같습니다

redis> BGSAVE
Background saving started

블로킹 문제에 대한 분명한 BGSAVE SAVE 명령을 최적화 해. 따라서 모든 내부 레디 스 관련된
및 RDB는 BGSAVE 운영 방식을 사용하고, SAVE 명령은 사용되지 않습니다.

2.1.1.2 자동 트리거

레디 스 자동으로 다음과 같은 경우에 RDB 장소 주문을 트리거 :

  • 예 : "백만 저장"으로, 저장 구성을 사용합니다. 은 m 초 수정 데이터 세트 내에서 N 배의 존재를 나타내는
    , 자동 트리거를 bgsave.
  • 복사 작업을 수행하는 노드로부터의 전체 량을 자동으로 수행되면, 마스터 노드는 생성 자세한 섹션 6.3 원리 복사 설명 참조는 RDB 노드로부터 문서를 전송 bgsave.
  • 레디 스를 다시로드 디버그 다시로드 명령을 실행, 자동으로 저장 작업을 트리거합니다.
  • 기본으로 종료 명령, 그렇지 않은 경우 개방 AOF 지속성 기능이되면
    자동으로 수행 bgsave.

2.1.2 BGSAVE 처리 흐름

BGSAVE 명령 처리
1. bgsave 명령 실행은 레디 스 부모 프로세스는 현재 서브으로이 실행되는지 여부를 결정
명령 bgsave 직접 복귀가 있으면 그러한 RDB / AOF 자식 프로세스와 같은 프로세스.

2. 부모 프로세스 포크 작업이 자식 프로세스를 만들기 위해서, 부모 프로세스 포크 동작이 통과 차단
통계 latest_fork_usec 옵션을 보려면 명령 정보를 통해, 최근 운영하는 포크 소비 얻을 수
마이크로에 있습니다.

3. 부모 프로세스 포크 종료 후, bgsave 명령이 리턴 정보를 "배경 절약 시작"
다른 명령에 응답을 계속 할 수 있고, 부모 프로세스를 방해하지 않습니다.

완료 후 4. 자식 프로세스를 RDB 파일을 생성, 메모리는 부모 프로세스에 따라 임시 스냅 샷 파일을 생성
원본 파일이 교체 원자이다. RDB의 마지막 세대 얻을 수있는 명령을 실행 Lastsave
시간, 해당 정보 통계 rdb_last_save_time 옵션을.

프로세스는 부모 프로세스의 완료를 나타내는 신호를 전송하고, 통계를 업데이트하는 부모 프로세스는 특정 참조
rdb_ 지속성 아래 * 정보 관련 옵션을.

RDB 로그 파일 어디 2.1.3?

지정된 디렉토리에 저장된 디렉토리 매개 변수를 설정합니다.
RDB 변경 로그 파일 저장 디렉토리 명령

config set dir {newDir}

RDB는 로그 파일 이름을 변경 명령 ​​:

config set dbfilename {newFileName}

$의 \ 색상 {빨간색} {디스크 나 하드 디스크가 가득 등이있을 때 나쁜 상황이 {NEWDIR} 온라인 설정 세트 디렉토리가있을 수 있습니다, 발생하는
핸드 오버 bgsave 디스크를 수행 한 후, 사용 가능한 디스크 경로에 파일 경로를 수정, 동일 적용
지속적인 AOF에 $ 파일}의
$ \ 색상 적색 {} {LZF 알고리즘 압축 과정을 할 수있는 RDB 파일을 생성 레디 스 기본적으로 압축
동적 |없는 파일 당신은 {예 매개 변수를 설정 rdbcompression을 config (설정) 할 수있다, 기본적으로 사용, 메모리 크기보다 훨씬 작} 수정. $}
$ \ 색상 적색 {{} CPU가 RDB 압축을 소비하지만, 파일 크기를 크게 줄일 수있는 반면, 하드 디스크에 쉽게
또는 네트워크에 노드에서 추천 라인을 돌았 다. } $

2.2 AOF는 지속적으로 높은 실시간 모드 로깅 로그 파일을 기반으로 명령을 쓰기

영구적 인 방법의 장단점 3. 두 비교

추천

출처www.cnblogs.com/powerjiajun/p/11569460.html