데이터베이스

[DB] Replication, 데이터베이스 복제와 고가용성 개념 정리

ioh'sDeveloper 2025. 1. 5. 16:36

Replication이란? 데이터베이스 복제와 고가용성 개념 정리

Replication(복제)은 데이터베이스 서버의 가용성을 높이기 위해, 하나의 데이터베이스(DB)를 여러 대의 DB 서버에 동일하게 복제하는 기술을 의미한다. 이는 시스템 장애서버 다운타임이 발생하더라도 서비스 중단 없이 정상적인 동작을 유지하기 위해 사용된다.


Replication의 필요성

예를 들어, Java Spring 애플리케이션에서 Article이라는 테이블에 대해 읽기/쓰기(read/write) 요청이 DB 서버로 전달된다고 가정하자. 이때 DB 서버에 장애가 발생하면 해당 테이블에 접근할 수 없기 때문에 서비스가 정상적으로 작동하지 않는다. 이러한 상황을 방지하기 위해 Replication을 통해 DB 서버를 복제 서버로 구성하여 장애 시에도 서비스가 중단되지 않도록 한다.


Replication의 구성

Replication을 구현할 때, 일반적으로 다음과 같은 두 가지 유형의 서버가 필요하다:

  1. Primary 서버 (Master/Leader): 원본 데이터를 저장하는 주 서버이다.
  2. Secondary 서버 (Replica/Secondary): Primary 서버로부터 동일한 데이터를 복제하여 저장하는 보조 서버이다.

복제 서버(Secondary)는 하나 이상 설정할 수 있으며, Primary 서버와 지속적으로 **동기화(sync)**를 유지한다. 즉, Primary 서버에 새로운 데이터가 추가되거나 기존 데이터가 수정/삭제되면 Secondary 서버도 동일하게 데이터를 업데이트한다.


Failover와 High Availability

Replication의 핵심 개념 중 하나는 Failover이다. 만약 Primary 서버에 장애가 발생하면, 시스템은 Secondary 서버로 전환하여 읽기/쓰기 요청을 처리하도록 구성할 수 있다. 이를 **Failover(장애 전환)**라고 한다.

이러한 구조는 서비스가 장애 상황에서도 지속적으로 운영될 수 있도록 보장하며, 이를 **High Availability(고가용성)**이라고 한다. High Availability는 대규모 서비스에서 중요한 요구 사항으로, 복제 서버가 장애 허용(fault-tolerant) 시스템을 구축하는 데 필수적이다.


Replication의 장점

Replication은 단순히 장애 상황에서의 백업 역할뿐만 아니라, 다음과 같은 성능상의 이점도 제공한다:

  1. 부하 분산(load balancing): 읽기(read) 요청을 Secondary 서버로 분산시킬 수 있다. 이는 Primary 서버의 부하를 줄이고 성능을 최적화하는 데 도움을 준다.
  2. 데이터 가용성: 복제 서버가 있어, 하나의 서버가 장애를 일으켜도 다른 서버가 동일한 데이터를 제공하므로 데이터 손실 위험이 줄어든다.
  3. 확장성(scalability): 복제 서버를 추가하여 **수평 확장(horizontal scaling)**이 가능하다.

예를 들어, Primary 서버는 쓰기(write) 요청을 처리하고, Secondary 서버는 읽기(read) 요청을 처리하도록 구성하면 시스템 성능이 더욱 향상된다.


Replication의 단점

Replication을 구현할 때 다음과 같은 문제점도 고려해야 한다:

  1. 데이터 동기화 지연: Primary와 Secondary 서버 간 데이터 동기화가 지연되면, 최신 데이터가 Secondary 서버에 반영되지 않을 수 있다. 이를 Replication Lag이라고 한다.
  2. 복잡한 관리: 서버가 많아질수록 시스템 관리가 복잡해지며, Failover 및 데이터 동기화 이슈를 해결하기 위한 추가적인 관리 작업이 필요하다.
  3. 쓰기 부하 분산 제한: 대부분의 복제 환경에서는 쓰기(write) 요청을 Primary 서버에서만 처리하기 때문에, 쓰기 부하를 분산시키는 데 한계가 있다.

용어 정리

Replication과 관련된 주요 용어들을 정리하면 다음과 같다:

용어 설명 대체 용어

Primary 원본 데이터를 저장하는 주 서버 Master, Leader
Secondary Primary 서버의 데이터를 복제한 서버 Replica, Slave
Shard Key 데이터를 분할하는 기준 키 Partition Key
Failover 장애 발생 시 자동으로 복제 서버로 전환 -
High Availability 장애 시에도 시스템이 지속적으로 동작 -

Partitioning, Sharding, Replication의 차이점

Replication을 이해하기 위해서는 PartitioningSharding 개념과의 차이점도 명확히 이해할 필요가 있다.

개념 설명

Partitioning 테이블을 목적에 따라 작은 테이블로 나누는 방식
Sharding **수평 파티셔닝(horizontal partitioning)**을 통해 나눈 테이블을 각각의 DB 서버에 저장하는 방식
Replication 데이터베이스 전체를 복제하여 여러 대의 DB 서버에 저장하는 방식

결론

Replication은 데이터베이스 시스템의 **고가용성(High Availability)**을 확보하고, **부하 분산(load balancing)**을 통해 성능을 향상시키기 위한 중요한 기술이다. Primary 서버와 Secondary 서버로 구성되며, 장애 발생 시 Failover를 통해 서비스 연속성을 보장한다.

Replication을 적절히 활용하면 대규모 서비스에서도 안정적이고 확장 가능한 데이터베이스 환경을 구축할 수 있다. 이를 통해 시스템의 장애 허용(fault tolerance) 능력이 향상되고, 읽기 트래픽 분산을 통해 데이터베이스 서버의 성능을 최적화할 수 있다.