Redis 4.0 Partial Resynchronization

<< Redis Server Replication Replication Performance >>

Redis 4.0 Partial Resynchronization

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

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

설명

마스터에 클론(슬레이브) 노드가 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 정도로 수정해서 사용할 것을 권장한다.

주의사항

레디스 4.0.0 Release note에는 클론을 중지한 후 재 시작했을때도 적용되는 것처럼 설명되어있으나 그렇지 않다.




<< Redis Server Replication Redis 4.0 Partial Resync Replication Performance >>

질문하거나 댓글을 보려면 클릭하세요.  댓글수 :    조회수 :

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