Redis 주종 설정 과 밑바닥 실현 원리 해석(실전 기록)

4683 단어 Redis마스터 설정
저 희 는 Redis 를 사용 할 때 주로 모델 이나 클 러 스 터 구 조 를 사용 하고 한 대의 Redis 서 비 스 를 사용 하지 않 습 니 다.
1.Redis 주종 배치 실전
저 희 는 master 노드 를 사용 하여 입력 을 쓴 다음 에 데 이 터 를 slave 노드 로 동기 화하 고 노드 에서 읽 거나 백업 하 는 기능 을 제공 하여 master 노드 의 압력 을 분담 할 수 있 습 니 다.
在这里插入图片描述
redis 주종 구조 구축,노드 절차 설정
1.redis.conf 파일 을 redis-6380.conf 로 복사 합 니 다.

cp ./redis.conf ./conf/redis-6380.conf
2.redis-6380.conf 설정 파일 을 열 고 관련 설정 을 다음 값 으로 변경 합 니 다.

port 6380
pidfile /var/run/redis_6380.pid #  pid     pidfile     
logfile "6380.log"
dir /usr/local/redis\5.0.3/data/6380 #         
#      bind
# bind 127.0.0.1(bind           ip,            ip,                ip   ,         bind,     )
3.redis-6380.conf 에서 마스터 복사 설정

replicaof 192.168.0.60 6379 #    6379 redis      ,Redis 5.0    slaveof.    IP redis  IP
replica\read\only yes #        
메모:노드 에서 항상 비어 있 는 것 을 발견 하면 메 인 노드 로 동기 화 되 지 않 은 데 이 터 는 192.168.0.60 의 설정 문제 일 수 있 습 니 다.메 인 서버 가 한 서버 에 있다 면 127.0.0.1 로 바 꿔 보 세 요.
4.노드 에서 시작
명령 을 주의 하 세 요.저 는 상대 적 인 경로 입 니 다.

 ./src/redis-server ./conf/redis-6380.conf 
그리고 리 디 스 서비스의 실례 를 살 펴 보 니 6379 와 6380 이 모두 시작 되 었 다.
在这里插入图片描述
5.노드 에서 연결

[root@localhost redis-6.2.3]# ./src/redis-cli -p 6380
127.0.0.1:6380>
데이터 동기 화 여부 보기:

127.0.0.1:6380> keys *
1) "test3"
2) "tul2"
3) "tul"
4) "tul3"
5) "test1"
6) "yaolao"
7) "test2"
127.0.0.1:6380> 
메모:노드 에서 항상 비어 있 는 것 을 발견 하면 메 인 노드 로 동기 화 되 지 않 은 데 이 터 는 192.168.0.60 의 설정 문제 일 수 있 습 니 다.메 인 서버 가 한 서버 에 있다 면 127.0.0.1 로 바 꿔 보 세 요.
6.6379 사례 에 데 이 터 를 쓰 고 6380 사례 가 신속하게 새로운 수정 데 이 터 를 동기 화 할 수 있 는 지 테스트 합 니 다.
7.6381 의 노드 를 스스로 설정 할 수 있 습 니 다.
여기까지.우리 의 주종 설정 이 완성 되 었 다.우 리 는 스스로 여러 개의 노드 를 설정 할 수 있다.
2.주종 실현 원리
master 에 slave 를 설정 하면 이 slave 가 처음으로 Master 에 연결 되 었 든 안 되 었 든 간 에 PSYNC 명령 을 보 내 master 에 데 이 터 를 복사 하 라 고 요청 합 니 다.
master 는 PSYNC 명령 을 받 은 후 배경 에서 데이터 영구 화 를 진행 합 니 다.bgsave 를 통 해 최신 rdb 스냅 샷 파일 을 생 성 합 니 다.영구 화 기간 동안 master 는 클 라 이언 트 의 요청 을 계속 받 습 니 다.데이터 세트 를 수정 할 수 있 는 요청 캐 시 를 메모리 에 저장 합 니 다.지구 화가 끝 난 후에 master 는 이 rdb 파일 데이터 세트 를 slave 에 보 냅 니 다.slave 는 받 은 데 이 터 를 지속 적 으로 rdb 를 생 성하 고 메모리 에 불 러 옵 니 다.그리고 master 는 메모리 에 캐 시 된 명령 을 slave 에 보 냅 니 다.
master 와 slave 간 의 연결 이 어떤 이유 로 끊 겼 을 때,slave 는 자동 으로 Master 를 다시 연결 할 수 있 습 니 다.master 가 많이 받 았 다 면.
하나의 slave 병렬 연결 요청 은 한 번 만 지속 적 으로 진행 되 며,한 번 만 연결 한 다음 에 이 지속 적 인 데 이 터 를 보 냅 니 다.
여러 개의 병렬 연 결 된 slave.
마스터 복사(전량 복사)프로 세 스 맵
在这里插入图片描述
psync 명령 은 redis 바 텀 C 언어 로 이 루어 집 니 다.
데이터 부분 복사
master 와 slave 가 연결 을 끊 으 면 보통 전체 데 이 터 를 복사 합 니 다.그러나 redis 2.8 버 전부터 redis 는 일부 데이터 복 제 를 지원 할 수 있 는 명령 PSYNC 로 master 에 데 이 터 를 동기 화 할 수 있 습 니 다.slave 와 master 는 네트워크 연결 이 끊 긴 후 일부 데이터 복사(정지점 전송)만 할 수 있 습 니 다.
master 는 메모리 에 데 이 터 를 복사 하 는 캐 시 대기 열 을 만 듭 니 다.캐 시 최근 의 데 이 터 를 만 듭 니 다.master 와 모든 slave 는 복 사 된 데이터 아래 에 offset 과 master 의 프로 세 스 id 를 유지 하고 있 습 니 다.따라서 네트워크 연결 이 끊 긴 후에 slave 는 master 에 게 미 완성 복 사 를 요청 합 니 다.기 록 된 데이터 아래 에서 시작 합 니 다.master 프로 세 스 id 가 변 했 거나 노드 데이터 에서 offset 을 표시 하 는 것 이 너무 낡 아서 master 캐 시 대기 열 에 없 으 면 전체 데 이 터 를 복사 합 니 다.
마스터 복사(부분 복사,정지점 전송)프로 세 스 맵:
slave 노드 가 끊 긴 후에 새로 추 가 된 데이터 만 동기 화 하려 고 합 니 다.(모든 것 을 동기 화 할 필요 가 없습니다.)
최신 명령 redis 는 repl backlog buffer(기본 크기 는 1MB)라 는 버퍼 에 기 록 됩 니 다.
在这里插入图片描述
오프셋 은 오프셋 입 니 다.즉,지난번 에 복사 한 오프셋 입 니 다.새로운 데 이 터 를 다시 복사 할 때 이 오프셋 뒤에서 복사 하면 됩 니 다.주의 하 세 요.이것 은 몇 분 안에 만 적합 합 니 다.
버퍼 에서 전 송 된 이 오프셋 을 찾 지 못 하면 노드 에서 오래 걸 렸 을 수도 있 습 니 다.이 때 는 정지점 에서 전 송 된 것 이 아니 라 전량 복 제 를 해 야 합 니 다.
주종 복제 폭풍 완화
만약 에 노드 가 많 으 면 주종 복사 폭풍(여러 개의 노드 에서 주 노드 를 동시에 복제 하여 주 노드 의 압력 이 너무 크다)을 완화 하기 위해 다음 과 같은 구 조 를 할 수 있다.부분 은 노드 와 노드(주 노드 와 동기 화)에서 데 이 터 를 동기 화 할 수 있다.즉,주종 의 ip 주 소 를 설정 하면 모두 mast 노드 의 IP 를 쓰 는 것 이 아니 라 노드 에서 온 것 을 쓸 수 있다.
在这里插入图片描述
레 디 스 의 메 인 설정 과 바 텀 실현 원리 해석(실전 기록)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 레 디 스 메 인 설정 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기