DB Replication(데이터베이스 복제)

Kkd·2025년 1월 2일
0

매일메일 개념정리

목록 보기
49/93

DB Replication(데이터베이스 복제)

DB Replication은 하나의 데이터베이스에서 데이터를 복사하여 다른 데이터베이스 서버로 동기화하는 프로세스를 의미합니다. 주로 데이터의 가용성성능 향상, 백업 및 복구를 목적으로 사용됩니다.


DB Replication의 개념

  • 마스터-슬레이브(Master-Slave) 모델:
    • Master DB: 데이터가 작성되는 주 데이터베이스. 데이터를 읽고 쓰는 작업이 가능.
    • Slave DB: 마스터 DB의 데이터를 복제받아 유지하는 보조 데이터베이스. 주로 읽기 작업(read-only)에 사용.
  • 데이터 동기화: 마스터에서 발생한 변경 사항이 슬레이브로 자동 복제.
  • 복제를 통해 여러 DB 인스턴스 간 데이터 일관성을 유지.

Replication의 동작 방식

  1. Master DB에서의 작업:

    • 사용자가 데이터를 삽입, 수정, 삭제하면 트랜잭션 로그에 해당 변경 사항이 기록됩니다.
  2. Change Logging:

  3. Slave DB로 전달:

    • Slave DB는 Master DB의 로그를 읽어와 이를 자체적으로 재적용하여 데이터를 동기화합니다.

Replication의 종류

1. 동기식 복제(Synchronous Replication)

  • 동작: Master DB에 데이터가 기록되면 Slave DB에서도 동시에 기록이 완료되어야 작업이 완료됨.
  • 장점: 데이터의 일관성이 보장됨.
  • 단점: 네트워크 지연 또는 장애로 인해 성능이 저하될 수 있음.

2. 비동기식 복제(Asynchronous Replication)

  • 동작: Master DB에서 데이터 변경 후, Slave DB로 복제 작업이 별도로 진행됨.
  • 장점: 성능에 미치는 영향이 적음.
  • 단점: 데이터 일관성이 지연될 수 있음(데이터 손실 가능성).

3. 반동기식 복제(Semi-Synchronous Replication)

  • 동작: Master DB가 변경 사항을 Slave DB에 전송 후 일부 확인을 받을 때만 작업 완료로 간주.
  • 장점: 동기식보다 성능이 우수하고, 비동기식보다 데이터 손실 가능성이 낮음.

Replication의 목적 및 장점

  1. 가용성(High Availability):

    • 하나의 DB 서버에 장애가 발생하더라도 다른 복제된 DB를 통해 서비스 지속 가능.
  2. 성능 향상:

    • 읽기 작업을 Slave DB로 분산(Read Scaling)하여 Master DB의 부하를 줄임.
  3. 백업 및 복구:

    • Slave DB는 Master DB의 백업 역할을 하여 데이터 손실 시 복구 가능.
  4. 데이터 분석 및 테스트 환경:

    • Slave DB를 분석용이나 테스트 환경으로 활용 가능.

Replication 설정 시 주의사항

  1. 네트워크 대역폭:

    • 복제 과정에서 대량의 데이터를 동기화하므로 충분한 네트워크 대역폭이 필요.
  2. 지연(Lag):

    • 비동기 복제의 경우 Master와 Slave 간 데이터 일치에 시간이 걸릴 수 있음.
  3. 데이터 충돌 방지:

    • 복제를 사용하는 경우 데이터가 일관되게 유지되도록 주의해야 함.
    • Master-Slave 구성이 아닌 경우 충돌을 방지하기 위한 Conflict Resolution 필요.
  4. 복제 모니터링:

    • 복제가 중단되거나 데이터가 손상되는 문제를 방지하려면 지속적인 모니터링이 중요.

실제 활용 예

MySQL에서 Replication 설정 예시

  1. Master 설정:

    • my.cnf 파일에 바이너리 로그 활성화:
      [mysqld]
      log_bin = /var/log/mysql/mysql-bin.log
      server-id = 1
    • Master 서버의 SHOW MASTER STATUS; 명령어를 사용하여 바이너리 로그 정보 확인.
  2. Slave 설정:

    • my.cnf 파일에서 서버 ID 설정:
      [mysqld]
      server-id = 2
    • Master에 연결하여 복제를 설정:
      CHANGE MASTER TO
          MASTER_HOST='master_host_ip',
          MASTER_USER='replication_user',
          MASTER_PASSWORD='password',
          MASTER_LOG_FILE='mysql-bin.000001',
          MASTER_LOG_POS=107;
      START SLAVE;
  3. 상태 확인:

    SHOW SLAVE STATUS\G;

Replication의 한계

  • 복제 지연(Latency)으로 인해 최신 데이터가 모든 Slave DB에 즉시 반영되지 않을 수 있음.
  • 동기식 복제의 경우 성능 저하 가능.
  • Master DB가 과부하 상태일 경우 복제 작업에 지연이 발생할 수 있음.

결론

DB Replication은 데이터의 가용성과 성능을 높이는 중요한 기술입니다. Master-Slave 구조는 읽기 작업 분산과 데이터 백업에서 유리하며, 설정 및 관리 과정에서 네트워크와 지연 문제를 고려해야 효과적으로 사용할 수 있습니다.

추가 학습 자료

profile
🌱

0개의 댓글