카테고리 없음

💡 GTID란? MySQL 복제를 위한 Global Transaction ID 완벽 정리

idea9329 2025. 4. 2. 09:31
반응형

 

MySQL이나 MariaDB에서 복제를 구성할 때, GTID(Global Transaction ID)라는 용어를 자주 보게 됩니다.
이 글에서는 GTID가 무엇인지, 왜 필요한지, 그리고 어떻게 설정하고 활용하는지까지 자세히 설명해드릴게요.


🔍 GTID란 무엇인가요?

GTID(Global Transaction Identifier) MySQL 또는 MariaDB에서 트랜잭션을 고유하게 식별하기 위한 ID입니다.
즉, 하나의 트랜잭션마다 전 세계적으로 유일한 ID가 부여되며, 이 ID를 기준으로 복제(replication)가 이루어집니다.

GTID는 다음과 같은 형식을 가집니다:

서버 UUID:트랜잭션 번호

예시:

3E11FA47-71CA-11E1-9E33-C80AA9429562:23

이 의미는 서버 UUID를 가진 서버에서 발생한 23번째 트랜잭션이라는 뜻입니다.


✅ GTID를 사용하는 이유

GTID는 단순한 트랜잭션 ID가 아닙니다. 복제 환경을 더 안정적이고 쉽게 관리할 수 있도록 도와주는 핵심 도구입니다.

1. 복제 정확성 향상

GTID는 각 트랜잭션에 고유한 ID를 부여하므로, 슬레이브 서버가 어떤 트랜잭션을 실행했는지 정확하게 알 수 있습니다.

2. 자동 복제 위치 결정

기존의 binlog 방식에서는 복제를 시작할 위치를 수동으로 지정해야 했지만, GTID를 사용하면 자동으로 이어받을 수 있습니다.

3. 장애 복구(Failover) 용이

마스터 서버 장애 시, 새로운 마스터를 설정할 때도 GTID 기반이라면 별도 작업 없이 복제를 계속 진행할 수 있습니다.


⚙️ GTID 설정 방법 (MySQL 기준)

GTID를 활성화하려면 my.cnf 설정 파일에 다음과 같이 설정합니다:

gtid_mode = ON
enforce_gtid_consistency = ON
log_slave_updates = ON
binlog_format = ROW

그리고 MySQL을 재시작하면 됩니다.
복제 연결 시에는 AUTO_POSITION = 1을 사용하세요.

CHANGE MASTER TO MASTER_AUTO_POSITION = 1;

🔄 GTID 복제 구성 흐름

  1. 마스터 서버에서 트랜잭션 실행 → GTID 생성
  2. 슬레이브 서버는 GTID를 기반으로 복제 진행
  3. 슬레이브 서버가 해당 GTID를 이미 처리했다면, 해당 트랜잭션은 자동 건너뜀

🧠 한 줄 요약

GTID(Global Transaction ID)는 MySQL 복제에서 트랜잭션을 고유하게 식별하여, 더 안전하고 간편한 복제를 가능하게 하는 시스템입니다.


📌 이런 분들에게 GTID는 필수입니다

  • MySQL 또는 MariaDB로 다중 슬레이브 복제 환경을 운영하는 경우
  • 마스터 장애 복구(Failover)를 자동화하고 싶은 경우
  • 복제 안정성을 최우선으로 고려하는 시스템 관리자

🔗 함께 보면 좋은 글


이 글이 도움이 되셨다면, 복제 구성 시 GTID를 꼭 활용해보세요!
궁금한 점이나 구성 예제가 필요하시면 언제든지 댓글이나 메시지 주세요 😊

반응형