[MYSQL] Mysql Group Replication 구축(1)

2024. 10. 25. 02:50·♣ Learning Logs/MYSQL

1. 알아보기 

1.1. Primary와 Replica DB 

현대의 애플리케이션은 수많은 데이터를 실시간으로 처리합니다. 

이를 지원하기 위해, 데이터베이스 시스템은 성능과 안정성을 유지해야 합니다. 

Primary-Replica 구조는 이런 요구를 충족하기 위한 대표적인 데이터베이스 아키텍처 중 하나입니다. 

 

[Primary DB란]

시스템에서 주 데이터베이스 역할을 하는 데이터베이스입니다. 

모든 데이터 쓰기(write) 작업이 Primary DB에서 이루어집니다.

기존 데이터를 수정하는 쓰기 작업(INSERT, UPDATE, DELETE) 이  Primary DB에서 이루어집니다.

즉, Primary DB는 데이터의 최신 상태를 항상 유지하며, 데이터의 변경이 최초로 적용되는 곳입니다.

⇒ 쓰기 전용 

 

[Replica DB란]

Replica DB는 Primary DB의 데이터를 복제한 데이터베이스입니다.

Primary DB에 변경이 발생하면, 그 변경 사항이 Replica DB로 자동으로 동기화됩니다.

단, 차이는 Replica DB는 일반적으로 읽기 전용으로 사용된다는 것입니다. 

즉, 읽기 작업(read)을 Replica DB에서 처리함으로써 Primary DB의 부하를 줄일 수 있습니다.

⇒ 읽기 전용 

1.2. 복제의 장점과 단점

[장점]

- 최적화: 읽기와 쓰기 작업을 분리하여 성능을 최적화할 수 있습니다. 

- 확장성: 더 많은 Replica DB를 추가하면, 읽기 성능을 더욱 높일 수 있습니다.

- 안정성: Primary DB에 문제가 발생해도, Replica DB는 여전히 데이터를 보유하고 있으므로 빠르게 복구할 수 있습니다.

 

[단점]

- 일관성 문제: 일시적인 데이터 불일치가 발생할 수 있습니다. 

- 복잡한 관리: 동기화 관리와 네트워크 부하 등을 고려해야 하므로, 시스템이 다소 복잡해질 수 있습니다.

1.3. 아키텍처 

복제는 크게 3 단계로 이루어집니다.

1. Primary 서버에서의 변경 기록 : 데이터 변경 사항을  Binary Log에 기록합니다. 

2. Replica 서버로 로그 전송: Replica 서버는 I/O 스레드를 사용해 Primary 서버에 접속해 이 바이너리 로그를 relay.log 로복제합니다.

3. 로그 재생: Replica 서버는 SQL 스레드를 사용해, 받은 바이너리 로그의 내용을 실행합니다.(SQL 쿼리로 이루어져있습니다)

 

[ 복제 유형 ]

(1) 비동기 복제(Asynchronous Replication)

기본적으로 MySQL 복제는 비동기 방식으로 동작합니다.

 Primary 서버는 트랜잭션이 완료되면, Replica 서버가 그 변경 사항을 수신했는지 여부와 관계없이 다음 작업을 처리합니다.

 Replica 서버는 일정 간격으로 Primary 서버의 바이너리 로그를 읽어와 데이터를 복제합니다. 

일관성보다 성능에 중점을 둔 방식입니다.

 

(2) 반동기 복제(Semi-synchronous Replication)

반동기 복제는 비동기 방식과 동기 방식의 절충점입니다. 

Primary 서버는 최소한 하나의 Replica 서버가 바이너리 로그를 수신할 때까지 대기한 후 트랜잭션을 완료합니다. 

 

(3) 완전 동기 복제(Synchronous Replication)

동기 복제는 Primary 서버에서 트랜잭션이 발생할 때 모든 Replica 서버가 해당 변경 사항을 반영할 때까지 트랜잭션을 완료하지 않습니다. 

즉, 모든 서버가 같은 데이터를 실시간으로 보유하게 됩니다. (하지만 이는 성능에 영향을 미칠 수 있습니다)

 

요약하면, 

MySQL Group Replication은 

fault-tolerant 시스템을 구축하는데 사용할 수 있는 기술입니다.

Single Primary Mode (단일 리더 모드) / Multi-Primary Mode (다중 리더 모드) 를 구성하도록 지원합니다.

그룹 내에서 자동으로 장애 조치가 가능하여, 한 노드가 다운되면 다른 노드가 자동으로 이를 감지하고 처리할 수 있습니다

⇒ 고가용성(High Availability)과 데이터 일관성이 중요한 애플리케이션에 적합합니다.



(2) 에서 계속...

저작자표시 비영리 변경금지 (새창열림)

'♣ Learning Logs > MYSQL' 카테고리의 다른 글

[MYSQL] Mysql Group Replication 구축(2)  (1) 2024.10.25
[MySQL] binlog로 시점 복원하기  (1) 2024.10.03
'♣ Learning Logs/MYSQL' 카테고리의 다른 글
  • [MYSQL] Mysql Group Replication 구축(2)
  • [MySQL] binlog로 시점 복원하기
HC.21
HC.21
hc-log 님의 블로그 입니다.
  • HC.21
    HC
    HC.21
  • 전체
    오늘
    어제
    • 분류 전체보기 (21)
      • ♣ Learning Logs (16)
        • 데이터 아키텍처 (1)
        • MSSQL (10)
        • MYSQL (3)
        • SQL (2)
        • MongoDB (1)
      • Project (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
HC.21
[MYSQL] Mysql Group Replication 구축(1)
상단으로

티스토리툴바