Redis의 리샤딩

ma2sql·2019년 8월 26일
0

MOVE SLOT

클러스터는 이미 생성되어 있는 것을 가정합니다.

1. CLUSTER NODES

  • cluster nodes
  • new nodes

2. 더미 데이터의 생성

3. 신규 노드 추가

4. 이동할 슬롯의 MIGRATING/IMPORTING 상태 설정

반드시, 타겟 슬롯의 상태부터 IMPORTING으로 변경할 것!
ref: https://redis.io/commands/cluster-setslot#redis-cluster-live-resharding-explained

5. 데이터 마이그레이션

  • 참고: redis-trib.rb에서는 한 번에 10개씩 키를 옮기며, timeout는 60초이다.

6. SLOT 할당에 대한 선언

7. ROLLBACK

  1. MIGRATING/IMPORTING이 계속 적용되어 있는 상태라면, 마저 마이그레이션을 진행한다.
  1. IMPORTING만 적용되어 있는 상태라면, 현재 slot의 주인 노드로 데이터를 옮긴다.
  1. MIGRATING만 적용되어 있는 상태이고, 해당 슬롯에 데이터가 없다면 그대로 STABLE을 실행한다.
  • 참고: redis-trib.rb (v3.0)의 fix_open_slots의 일부 코드

0개의 댓글