[Redis] Replication, 복제

kkson·2023년 9월 3일
1

Database

목록 보기
4/8
post-thumbnail

Redis 복제(Replication)의 기본적인 특성을 알아본다. 이후 이를 통해 어떻게 고가용성 확보와 페일오버(failover, 장애 극복) 기능을 가지는지 알아볼 수 있다.

기본적으로 리더 팔로워(leader follower)라는 마스터 개체를 완전히 똑같이 복제하는 마스터 레플리카(master-replica)를 허용한다.

이 시스템은 다음 세 가지 주요 메커니즘으로 작동한다.

  1. 마스터와 레플리카 개체가 잘 연결된 상태라면, 마스터는 가지고 있는 데이터셋의 변경점들을 레플리카에 명령어들을 통해 계속 업데이트시켜준다.
  2. 네트워크 이슈가 있거나 마스터 또는 레플리카의 연결 타임아웃이 발생해 마스터와 레플리카의 연결이 끊긴다면, 레플리카는 재연결을 하여 부분 재동기화를 시도한다. 그 말인즉슨, 연결이 끊긴 동안 들어왔던 명령어들을 가져오기를 시도한다.
  3. 만약 부분 재동기화가 불가능하다면, 레플리카는 전체 재동기화를 요청한다. 이 작업은 더 복잡해지는데 마스터가 모든 데이터에 대한 스냅샷을 만들어 레플리카에 보내고 나서 데이터 변경점들에 대한 명령어들을 보내게 된다.

Redis replication의 몇 가지 중요한 사실:

  • 복제는 비동기로 작동한다(by default).
  • 마스터는 여러 개의 레플리카를 가질 수 있다.
  • 레플리카는 다른 레플리카의 연결을 승인할 수 있다.
  • 마스터 사이드에서 복제는 논 블로킹 처리한다. 즉, 하나 이상의 레플리카가 초기 동기화 또는 부분 재동기화를 수행할 때 마스터가 쿼리를 계속 처리한다.
  • 레플리카 사이드에서도 대부분 논 블로킹 처리한다. 레플리카가 초기 동기화를 수행하는 동안 이전 버전의 데이터셋을 이용해 쿼리를 처리한다.
  • 복제는 확장성을 위해, 느린 작업(O(N)) 처리를 위해 읽기 전용(read-only) 쿼리를 위한 여러 개의 레플리카를 가지기 위해 또는 단순히 데이터 안전 및 고가용성을 개선하기 위해 사용될 수 있다.
  • 마스터가 전체 데이터셋을 디스크에 쓰는 비용을 줄이기 위해 복제를 사용할 수 있다.


References

[1] Redis replication. Redis. (n.d.). Retrieved July 7, 2022, from https://redis.io/docs/manual/replication/

profile
열린 마음으로 환경 변화에 유연한 개발자

0개의 댓글

관련 채용 정보