카테고리 없음

99클럽 코테 스터디 17일차 TIL DB Data Replication

차가리 2024. 6. 5. 21:20
728x90
  • DB
    • Index
      • Index 작동 원리
      • Index 종류
        • B-Tree 인덱스
        • Hash Indexes
        • Bitmap Index
        • GIST(Generalized Search Tree)
        • R-Tree
        • Full Text Index
        • Spatial Index
        • Trie(Prefix Tree) Index
        • Covering Index
  • 영속성
  • 트랜잭션
  • ORM
  • ACID
  • N+1 문제
  • DB 정규화
  • Data Replication
  • sharding 전략
  • CAP 이론

란?

  • 둘 이상의 사이트나 노드에 데이터를 저장하는 프로세스
  • 데이터 베이스 시스템에서 데이터를 여러 위치에 복사하고 유지하는 프로세스를 말함.
  • 데이터의 가용성을 높이고, 데이터 손실에 대비하며, 읽기 성능을 향상 시킬 수 있음.

데이터 복제 타입

  1. 트랜잭션 복제
    • 모든 데이터 변경이 주 데이터베이스와 복제본 데이터베이스에 동시에 적용됨.
    • 데이터 일관성을 보장하지만, 네트워크 지연과 성능 저하가 발생할 수 있음.
    • 일반적으로 트랜잭션의 커밋이 모든 복제본에서 성공적으로 완료된 후에 완료됨.
  2. 스냅샷 복제
    • 한 데이터베이스에서 다른 데이터베이스로 데이터 변경 사항을 복사함.
    • 스냅샷 복제는 데이터베이스의 중요성이 덜할 때 유용함. 또는 데이터베이스가 자주 변경되지 않는 경우에도 유용함.
  3. 비동기 복제
    • 주 데이터베이스에 데이터 변경이 먼저 적용되고, 그 후 복제본 데이터베이스로 변경 사항이 전달됨.
    • 데이터 전송 지연이 있을 수 있지만, 주 데이터베이스의 성능에 미치는 영향이 적음.
    • 일관성은 보장되지 않지만, 가용성을 높일 수 있음.
  4. 단방향 복제
    • 데이터가 한 방향으로만 복제됨. 즉, 주 데이터베이스에서 복제본 데이터베이스로 데이터가 복제됨.
    • 주로 읽기 성능을 향상시키기 위해 사용됨.
  5. 양방향 복제
    • 데이터 변경이 양방향으로 이루어질 수 있음. 즉, 주 데이터베이스와 복제본 데이터베이스 모두에서 데이터 변경이 가능함.
    • 충돌 해결 메커니즘이 필요함.
  6. 병합 복제
    • 단일 데이터베이스로 결합되는 두 개의 데이터베이스로 구성됨. 결과적으로 데이터 변경 사항이 publisher 에서 subscriber 로 업데이트 될 수 있음.
    • 일반적으로 서버-클라이언트 환경에서 사용됨.
  7. 다중 마스터 복제
    • 여러 마스터 데이터베이스에서 동시에 데이터 변경이 가능함.
    • 복잡한 충돌 해결 및 데이터 일관성 관리가 필요함.

목적

  1. 고가용성
    • DB 장애 시 복제본 DB 로 자동전환(failover) 하여 시스템 가동 시간을 최대화 함.
  2. 재해 복구
    • 재해 상황에서 데이터를 복구하기 위해 지리적으로 분산된 데이터 복제본을 유지함.
  3. 성능 향상
    • 읽기 작업을 복제본 데이터베이스로 분산시켜 주 데이터베이스의 부하를 줄임.
    • 지리적으로 분산된 사용자를 위해 지역별로 데이터를 복제하여 지연 시간을 줄임.
  4. 백업
    • 정기적인 백업을 수행하여 데이터 손실에 대비함.

구현 방법

  1. DBMS 기능 사용
    • 많은 DBMS 는 내장된 복제 기능을 제공함. 예를 들어, MySQLreplication, PostgreSQLstreaming replication, Oracledata Guard 등이 있음.
  2. 서드 파티 도구 사용
    • 복제를 지원하는 서드 파티 도구나 서비스(예: Apache Kafka, SymmetricDS) 를 사용할 수 있음.
  3. 애플리케이션 레벨 복제
    • 애플리케이션 코드에서 직접 복제 논리를 구현할 수 있음. 이는 더 많은 유연성을 제공하지만, 관리와 유지보수가 복잡해질 수 있음.

데이터 복제는 많은 이점을 제공하지만, 해결해야할 부분도 존재함.

  1. 데이터 일관성
    • 동기 복제에서는 일관성을 유지할 수 있지만, 비동기 복제에서는 데이터 전송 지연으로 인해 일관성 문제가 발생할 수 있음.
  2. 충돌 해결
    • 양방향 복제나 다중 마스터 복제에서는 동일한 데이터에 대한 동시 변경이 충돌을 일으킬 수 있음. 이를 해결하기 위한 메커니즘이 필요함.
  3. 복제 지연
    • 비동기 복제에서는 주 데이터베이스와 복제본 데이터베이스 간의 데이터 전송 지연으로 인해 최신 데이터가 복제본에 반영되기 까지 시간이 걸릴 수 있음.
  4. 네트워크 트래픽
    • 복제는 네트워크 트래픽을 증가시킬 수 있으며, 특히 대량의 데이터를 전송하는 경우 네트워크 병목을 일으킬 수 있음.
728x90