DB

[MariaDB (4/5)] MariaDB 이중화 (GTID 1. 개념 정리)

제익 2025. 2. 14. 22:41
반응형

 

이전 블로그에서 binary log를 이용한 MariaDB 이중화 방법을 알아보았다.

1. [MariaDB (2/5)] MariaDB 이중화 테스트(Master - Slave)
2. [MariaDB (3/5)] MariaDB 이중화 테스트(Master - Master)

 

위 방법들은 전통적인 Binary Log 기반 이중화 방법으로, 여러 단점이 있다.

 

1️⃣ Failover(장애 복구)가 복잡함

  • 마스터 장애 발생 시, 슬레이브를 새로운 마스터로 승격하려면 Binary Log 파일과 Position을 직접 설정해야 함.
  • 실수하면 데이터 불일치 발생 가능.

2️⃣ 슬레이브 추가 시 Position 지정 필요

  • SHOW MASTER STATUS;로 확인한 Binary Log 파일과 Position을 슬레이브에 직접 입력해야 함.
  • GTID 기반 복제는 자동으로 필요한 트랜잭션만 실행함.

3️⃣ 마스터 변경 시 트랜잭션 손실 위험

  • 각 슬레이브의 복제 진행 상태가 다를 수 있어 어떤 트랜잭션까지 복제되었는지 확인이 어려움.
  • GTID를 사용하면 슬레이브가 자동으로 "안 한 트랜잭션"만 찾아 실행.

4️⃣ 중복 실행 방지가 어려움

  • 잘못된 Position 설정 시 이미 실행된 트랜잭션이 다시 실행될 위험이 있음.
  • GTID 기반 복제는 한 번 실행된 트랜잭션을 다시 실행하지 않음.

5️⃣ 복제 설정 변경 시 유연성이 부족

  • 새로운 슬레이브 추가, 마스터 변경 시 수동 설정이 많아 관리가 어려움.

 

 

실제로 구축한 뒤, Master - Slave 승격 테스트를 여러번 수행하다보니,

연결관계가 끊기는 상황이 자주 발생..

 

그래서 현재는 GTID(Global Transaction ID)를 이용한 이중화를 주로 사용한다.


 

GTID란?
GTID(Global Transaction ID)는 각 트랜잭션에 고유한 ID를 부여한 것

 

 

- 기존 Binary Log Position 기반 복제는 파일과 위치를 직접 지정해야 하지만, GTID 기반 복제는 자동으로 트랜잭션을 추적하고 동기화할 수 있다.

 

- 그렇기 때문에 여러 장점이 존재한다.

 

1️⃣ 자동 Failover 지원

  • 마스터 장애 발생 시, 슬레이브가 GTID를 기반으로 복제를 자동으로 이어받음.
  • 새로운 마스터로 전환할 때 Binary Log Position을 수동으로 지정할 필요 없음.

2️⃣ 슬레이브 추가가 용이함

  • 새 슬레이브를 추가할 때 GTID만 사용하면 자동으로 필요한 트랜잭션을 복제함.
  • 기존처럼 SHOW MASTER STATUS;로 Binary Log 파일과 Position을 직접 확인할 필요 없음.

3️⃣ 데이터 일관성 보장

  • GTID가 같은 트랜잭션은 한 번만 실행되므로 중복 실행이 방지됨.
  • 복제 과정에서 누락된 트랜잭션을 자동으로 찾아 실행하여 데이터 불일치 문제를 줄임.

4️⃣ 간편한 관리

  • CHANGE MASTER TO MASTER_AUTO_POSITION=1; 명령어만 사용하면 자동으로 복제가 설정됨.
  • 복제 설정이 간단하고 유지보수가 쉬워짐.

 

어쨋든 GTID를 사용해 이중화를 하려고 해도 Binary log설정은 켜져 있어야한다.

그 이유는 GTID 자체는 트랜잭션을 추적하는 ID일 뿐이고,

실제 복제는 여전히 Binary Log를 기반으로 동작하기 때문..

 

  1. GTID는 트랜잭션 ID 관리
    • GTID는 각 트랜잭션을 고유하게 식별함.
    • 슬레이브는 마스터의 GTID 목록을 보고 어떤 트랜잭션을 실행해야 하는지 결정.
  2. Binary Log는 트랜잭션 저장소 역할
    • 슬레이브는 마스터에서 GTID를 보고, 해당 GTID에 해당하는 Binary Log의 내용을 가져와 실행.
    • 만약 Binary Log가 없으면, 슬레이브는 복제할 데이터를 가져올 수 없음

즉, GTID만 설정하고 Binary Log를 끄면 복제가 동작하지 않음!


슬레이브는 마스터에게 "이 GTID의 트랜잭션을 주세요"라고 요청하는데,

마스터에 Binary Log가 없으면 줄 수 있는 데이터가 없기 때문에,

GTID 복제라도 Binary Log는 반드시 켜야함.

 

반응형