기술나눔

7. Redis 마스터-슬레이브 복제 프로세스

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Redis 마스터-슬레이브 복제 프로세스

​ Redis 노드(슬레이브 노드)가 마스터로부터 데이터를 계속 복사할 수 있을 때까지 127.0.0.1 6380의 슬레이브와 유사한 명령을 받으면 일반적으로 다음과 같은 과정을 거친다.

1. 마스터 주소 저장

​ 슬레이브는 Slaveof 명령을 받으면 즉시 새로운 마스터 주소를 저장합니다.

2. 연결 설정

슬레이브는 마스터와의 소켓 연결 설정을 시도하는 예약된 작업을 유지합니다. 연결을 설정할 수 없는 경우 연결이 성공하거나 슬레이브 오브 없음 명령이 수신될 때까지 주기적으로 재시도합니다.

3. 슬레이브가 ping 명령을 보냅니다.

연결이 성공적으로 설정된 후 슬레이브는 첫 번째 통신을 위해 ping 명령을 보냅니다. 슬레이브가 마스터로부터 응답을 받지 못하면 슬레이브는 적극적으로 연결을 끊고 다음 예약된 작업에서 연결을 다시 시도합니다.

4. 슬레이브 신원 확인

​ 마스터가 슬레이브로부터 ping 명령을 받으면 즉시 응답하지 않고 먼저 인증을 수행합니다.확인에 실패하면 연결을 거부하라는 메시지가 전송되고, 확인에 성공하면 연결 성공 응답이 슬레이브에 전송됩니다.

5. 마스터 지속성

첫 번째 통신이 성공한 후 슬레이브는 마스터에 데이터 동기화 요청을 보냅니다. 마스터가 요청을 받으면 하위 프로세스를 포크하여 비동기 방식으로 즉시 하위 프로세스를 유지할 수 있습니다.

6. 데이터 전송

​ 지속성이 완료된 후 마스터는 자식 프로세스를 분기하고 자식 프로세스가 비동기적으로 슬레이브에 데이터를 보내도록 합니다. 슬레이브는 수신된 데이터를 로컬 지속성 파일에 지속적으로 기록합니다.

슬레이브 데이터 동기화 프로세스 중에 마스터의 기본 프로세스는 계속해서 클라이언트의 쓰기 작업을 수락하고 새 데이터를 마스터 메모리에 쓸 뿐만 아니라 동기화 캐시에도 씁니다. 마스터의 지속성 파일에 있는 데이터가 전송된 후 마스터는 동기화 캐시의 새 데이터를 슬레이브에 보내고 슬레이브는 이를 로컬 지속성 파일에 씁니다.데이터 동기화 완료

7. 슬레이브가 메모리 데이터를 복원합니다.

​ 슬레이브와 마스터 간의 데이터 동기화가 완료되면 슬레이브는 로컬 영구 파일을 읽어 로컬 메모리에 복원한 후 외부 읽기 서비스를 제공합니다.

8. 지속적인 증분 복제

슬레이브가 외부 서비스를 제공하는 과정에서 마스터는 마스터-슬레이브 데이터의 일관성을 보장하기 위해 증분 방식으로 슬레이브에 새로운 데이터를 지속적으로 보냅니다.