데이터베이스 복제

데이터베이스 복제 (Database replication)

Redis Enterprise Software에서 데이터베이스 복제(replication)는 **고가용성(high availability)**을 보장하는 핵심 메커니즘이에요. 복제가 켜지면 데이터셋이 복제본(replica) 샤드로 복제되어, 주 샤드(primary)가 실패해도 데이터를 중단 없이 서비스할 수 있어요. 이번 페이지에서는 복제의 원리와 Auto Tiering, 복제 백로그(backlog) 설정까지 살펴볼게요.

출처: Redis 공식 문서 — Database replication

복제 (Replication)란?

데이터베이스 복제는 고가용성을 확보하는 데 도움을 줘요.

복제가 활성화되면 데이터셋이 복제본(replica) 샤드로 복제되는데, 이 복제본 샤드는 주(primary) 샤드와 지속적으로 동기화돼요. 주 샤드가 실패하면 **자동 장애 조치(failover)**가 발생하고, 복제본 샤드가 승격되어 새로운 주 샤드가 돼요.

이전 주 샤드가 복구되면, 그 샤드는 새 주 샤드의 복제본 샤드가 돼요. 이 자동 장애 조치 메커니즘 덕분에 최소한의 중단으로 데이터가 서비스된다는 걸 보장해요.

고가용성 구성을 다음과 같이 조정할 수 있어요.

  • Rack/Zone Awareness — 랙/존 인지(awareness)를 사용하면 마스터와 복제본 샤드가 절대 같은 랙을 공유하지 않도록 하는 추가 로직이 동작해요. 그래서 전체 랙이 손실돼도 가용성이 보장돼요.
  • High Availability for Replica Shards — 복제본 샤드용 고가용성을 사용하면, 노드 장애 시 복제본 샤드가 자동으로 마이그레이션되어 고가용성을 유지해요.

복제를 활성화하면 총 데이터베이스 크기에 영향이 있다는 점은 Database memory limits 문서에 자세히 설명되어 있어요.

Auto Tiering 복제 고려사항 (Auto Tiering replication considerations)

Auto Tiering이 활성화된 데이터베이스에서는 상대적으로 느린 복제 시간이 발생할 수 있으므로, rladmin을 사용해서 순차 복제(sequential replication) 기능을 설정하는 것을 권장해요. 순차 복제를 설정하지 않으면 경우에 따라 메모리가 부족해질 수 있어요.

순차 복제를 설정하지 않아도 주 샤드에서 데이터 손실은 발생하지 않아요. 하지만 주 샤드에 높은 쓰기율 트래픽이 있고 동시에 여러 복제가 일어나면, 복제본 샤드로의 복제가 성공하지 못할 수 있어요.

다음 rladmin 명령은, 같은 클러스터 노드에서 복제될 수 있는 주 샤드의 수와, 동시에 복제 프로세스를 실행할 수 있는 같은 노드의 복제본 샤드 수를 설정해요.

권장되는 순차 복제 구성은 2, 즉 다음과 같아요.

rladmin tune cluster max_redis_forks 1 max_slave_full_syncs 1

이 뜻은, 어느 한 시점에 하나의 주 샤드와 하나의 복제본만 전체 동기화(full sync) 복제 프로세스에 참여할 수 있다는 거예요.

데이터베이스 복제 백로그 (Database replication backlog)

고가용성을 위해 복제를 사용하는 Redis 데이터베이스는 (샤드별로) **복제 백로그(replication backlog)**를 유지해서 데이터베이스의 주 샤드와 복제본 샤드를 동기화해요.

기본적으로 복제 백로그는 데이터베이스 크기의 1% 를 데이터베이스의 샤드 수로 나눈 값으로 설정되며, 샤드당 1MB에서 250MB 사이 범위로 정해져요.

백로그 크기를 제어하려면 rladmincrdb-cli 유틸리티를 사용해요. 백로그 크기는 데이터 워크로드와 사용 가능한 메모리 사이에서 균형을 맞춰 설정해야 합니다 (확인 필요).

정리 (Summary)

  • 복제는 주 샤드와 동기화되는 복제본 샤드를 두어 고가용성을 보장해요.
  • 주 샤드 실패 시 자동 장애 조치로 복제본이 새 주 샤드가 돼요.
  • Rack/Zone Awareness, 복제본 샤드 고가용성으로 구성의 견고함을 높일 수 있어요.
  • Auto Tiering 데이터베이스는 순차 복제(rladmin tune cluster max_redis_forks 1 max_slave_full_syncs 1)를 권장해요.
  • 복제 백로그는 기본적으로 데이터베이스 크기의 1%를 샤드 수로 나눈 값이며, 샤드당 1MB~250MB 범위예요.

더 알아보기 (Learn more)