Redis 4.0 Partial Resynchronization

Redis Server Course Redis Technical Support Redis Enterprise Server

Redis 4.0 Partial Resynchronization

이것은 Redis 4.0.0에서 기능이 개선된 부분 동기화에 대한 설명이다.

이 문서는 버전 4.0.0을 기준으로 만들었습니다.

설명

마스터에 복제(replica) 노드가 2개 있는 상황에서 마스터 노드가 다운되었을때 복제 중 하나가 마스터가 되면 다른 복제서버는 새 마스터로부터 데이터를 받는다.   이때 3.2 버전까지는 복제서버가 가지고 있던 데이터를 버리고 새 마스터로 부터 Full Sync로 전체 데이터를 다시 받았다.   4.0 부터는 변경(추가)된 부분만 받는 Partial Sync로 바뀌었다.
이로 인한 이점은 다음과 같다.
  • Full Sync는 복제서버에 데이터를 보내기 위해서 전체 데이터를 rdb 파일에 쓰는데, Partial Sync로 바뀌면서 rdb 파일을 디스크에 쓰지 않으므로 디스크 부하가 없어졌다.
  • 쓰여진 rdb 파일을 복제서버에 보내므로 네트워크 부하도 심했으나, Partial Sync로 바뀌면서 네트워크 부하도 현저히 줄었다.
  • 복제서버도 받은 rdb 파일을 디스크에 쓰는 일이 없어졌고, 기존 데이터를 모두 지우고 rdb 파일에서 데이터 전체를 로딩하지 않아도 된다.
  • 전체적으로 데이터를 쓰고, 보내고, 읽어들이는 작업이 대폭 줄었으므로 Failover 완료 시간이 많이 단축되었다.

사용 조건

새 마스터와 복제간에 차이나는 데이터를 보내야 하는데 이것은 새 마스터의 repl-backlog-size와 관계가 있다. 보내야할 데이터 크기가 repl-backlog-size보다 크다면 Full Sync로 처리된다. 이 파라미터의 기본값이 1mb인데 이 사이즈는 새 마스터에 추가된 데이터가 전혀없어도 복제서버가 약 2mb정도를 요청하므로 Full Sync가 된다. 그러므로 이 값을 최소 10mb 정도로 수정해서 사용할 것을 권장한다.

<< Replication Intro Replication Performance >>

Email 답글이 올라오면 이메일로 알려드리겠습니다.