> 데이터 베이스 > Redis > Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.

Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.

青灯夜游
풀어 주다: 2021-10-08 10:56:36
앞으로
1706명이 탐색했습니다.

이 글에서는 redis의 마스터-슬레이브 복제에 대해 설명하고 구체적인 사용법과 주의 사항, 센티넬 모드를 소개하겠습니다. 모두에게 도움이 되기를 바랍니다!

Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.

1: 개요

Redis 마스터-슬레이브 복제는 현재 가장 일반적으로 사용되는 읽기-쓰기 분리 방법입니다. 마스터는 하나 이상의 슬레이브에 연결되며 주로 문제를 해결합니다. Redis 읽기에 대한 부담을 공유하고 데이터 읽기 및 쓰기의 효율성을 높이기 위한 것입니다. [관련 권장 사항:

Redis 비디오 튜토리얼

]

Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.둘: 특정 용도

1. 메인 라이브러리에 연결할 슬레이브 라이브러리를 지정합니다.

host는 연결 주소, port는 연결의 포트 번호입니다. 주소는 물론 직접 복사할 수도 있습니다. 여러 redis.conf 파일은 포트 번호, 스레드 번호 및 기타 정보를 수정하여 다양한 포트의 여러 Redis 서비스를 시작할 수 있습니다

SLAVEOF [host] [port]

2. 메인 라이브러리는 쓰기를 담당하고(읽기도 가능), 슬레이브 라이브러리는 읽기만 가능합니다: SLAVEOF [host] [port]

2.主库负责写(读也可以),从库只能读:

主库中写的数据能在从库中获取:6381为主库,6380为从库
로그인 후 복사

Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.

3.使从库重新成为主库:

SLAVEOF no one

三:注意事项:

(1)一般情况下,主库掉线后,从库会等待主库重新连线,依旧保持从库状态

(2)从库掉线后,需重新连上主库,才能作为从库,否则则为主库

四:哨兵模式

概述:为了当主库服务掉线后,使其他从库能重新选取一个主库继续服务运转

作用:当主库服务掉线之后,哨兵会监听到主库掉线,并进行投票操作使其中一个从库成为主库替代原主库运行。

1、在redis服务启动的目录下创建一个 sentinel.conf文件,vim编辑此配置文件

` sentinel monitor host6379 127.0.0.1 6381 1  `
로그인 후 복사

2、通过 redis-sentinel 【文件目录】/sentinel.conf

 连接建立-->数据同步-->命令持续传播
 
 在从节点执行 slaveof 命令后,复制过程便开始运作,下面图示大概可以看到,\
로그인 후 복사

Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.

3. 슬레이브 라이브러리를 다시 마스터 라이브러리로 만듭니다:

SLAVEOF no one

< h2 data-id="heading-2">3: 주의 사항:

(1) 일반적인 상황에서 마스터 데이터베이스가 오프라인 상태가 된 후 슬레이브 데이터베이스는 마스터 데이터베이스가 다시 연결될 때까지 기다리며 여전히 슬레이브 데이터베이스 상태를 유지합니다 Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.

(2) 슬레이브 데이터베이스가 오프라인 상태가 된 후 슬레이브 라이브러리로 사용하려면 마스터 데이터베이스에 다시 연결해야 합니다. 그렇지 않으면 마스터 라이브러리가 됩니다

4: Sentinel 모드

개요: 메인 라이브러리 서비스가 오프라인일 때 계속하기 위해 다른 슬레이브 라이브러리가 마스터 라이브러리를 다시 선택할 수 있도록 하기 위해 서비스 운영


기능: 메인 데이터베이스 서비스가 오프라인이 되면 센티널은 메인 라이브러리가 데이터베이스가 오프라인 상태이고 슬레이브 데이터베이스 중 하나를 기본 데이터베이스로 만들어 원래 기본 데이터베이스를 대체하도록 투표 작업을 수행합니다.

Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.1.redis 서비스가 시작된 디렉터리에 sentinel.conf 파일을 생성하고, vim

# Error condition on socket for SYNC: {socket_error_reason}
로그인 후 복사

2로 이 구성 파일을 편집합니다. redis-sentinel [파일 디렉터리] ]/sentinel.confSentinel 시작

참고: Sentinel 모드에서 원래 기본 라이브러리가 다시 연결되면 Sentinel은 해당 작업을 새 기본 라이브러리에 추가합니다. 새로운 메인 도서관. Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.

Five: 원리:

rrreee

복제 과정은 대략 6가지 과정으로 나누어져 있는 것을 사진에서 볼 수 있습니다

Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.

마스터-슬레이브 구성 이후의 로그 기록에서도 이 과정을 볼 수 있습니다


1 ) 마스터 노드(master) 정보를 저장합니다.
slaveof를 실행한 후 Redis는 다음 로그를 인쇄합니다.

Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.2) 슬레이브 노드(slave)는 예약된 작업이 새로운 마스터 노드가 있음을 발견하면 1초마다 실행되는 예약된 작업을 통해 복제 관련 로직을 유지합니다. , 새 마스터 노드와 통신을 시도합니다.

Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.

슬레이브 노드가 마스터 노드와 네트워크 연결을 설정합니다.

슬레이브 노드가 소켓을 설정합니다. 마스터 노드에서 보낸 메시지를 수락하는 데 특별히 사용되는 포트 51234를 사용하여 명령을 복사합니다. 슬레이브 노드가 성공적으로 연결되면 다음 로그가 인쇄됩니다. Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.

🎜🎜🎜 슬레이브 노드가 연결을 설정할 수 없는 경우 예약된 작업은 연결이 성공하거나 복제를 취소하기 위해 슬레이브가 실행되지 않을 때까지 무기한 재시도합니다. 연결 실패와 관련하여 슬레이브 노드에서 정보 복제를 실행하여 마스터 노드에 대한 연결이 실패한 시스템 시간을 기록하는 master_link_down_since_seconds 표시기를 확인할 수 있습니다. 슬레이브 노드가 마스터 노드에 연결하는 데 실패하면 문제 발견을 용이하게 하기 위해 매초 다음 로그가 인쇄됩니다. 🎜rrreee🎜3) ping 명령을 보냅니다. 🎜연결이 성공적으로 이루어진 후 슬레이브 노드는 첫 번째 통신을 위해 핑 요청을 보냅니다. 핑 요청의 주요 목적은 다음과 같습니다. 🎜·마스터와 슬레이브 사이의 네트워크 소켓이 사용 가능한지 여부를 감지합니다. 🎜·마스터 노드가 현재 처리 명령을 수락할 수 있는지 여부를 감지합니다. 🎜ping 명령을 보낸 후 슬레이브 노드가 마스터 노드로부터 pong 응답을 수신하지 못하거나 네트워크 시간 초과 또는 마스터 노드가 차단되어 명령에 응답할 수 없는 등의 시간 초과가 발생하는 경우 슬레이브 노드는 연결을 끊습니다. 복제 연결이 실행되고 다음 예약된 작업이 다시 연결을 시작합니다. 🎜🎜🎜🎜🎜🎜🎜🎜노드에서 보낸 ping 명령이 성공적으로 반환되고 Redis는 다음 로그를 인쇄하고 후속 복제 프로세스를 계속합니다. 🎜🎜🎜🎜

4) 권한 확인. requirepass 매개변수가 마스터 노드에 설정된 경우, 슬레이브 노드는 비밀번호가 마스터 노드와 동일한지 확인하기 위해 비밀번호 확인이 필요합니다. 확인에 실패하면 복제가 수행됩니다. 종료되고 슬레이브 노드는 복제 프로세스를 다시 시작합니다.

5) 데이터 세트를 동기화합니다. 마스터-슬레이브 복제 연결이 정상적으로 통신한 후 첫 번째 복제 시나리오의 경우 마스터 노드는 보유하고 있는 모든 데이터를 슬레이브 노드로 보냅니다. 이 부분은 작업 중 가장 긴 단계입니다.

6) 연속적으로 복사하라는 명령입니다. 마스터 노드가 현재 데이터를 슬레이브 노드에 동기화하면 복제 설정 과정이 완료됩니다. 다음으로, 마스터 노드는 마스터-슬레이브 데이터 일관성을 보장하기 위해 슬레이브 노드에 지속적으로 쓰기 명령을 보냅니다.

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !

위 내용은 Redis의 마스터-슬레이브 복제에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿