반응형
MySQL 복제에서 최근 가장 많이 쓰이는 방식이 바로 GTID 기반 복제다.
GTID(Global Transaction ID)는 각 트랜잭션에 고유 식별자를 부여해
복제 위치를 자동으로 관리할 수 있게 해준다.
기존처럼 binlog 파일명 + 포지션을 수동으로 지정할 필요가 없고,
장애 복구, 자동화 구성, 마스터 전환 작업이 훨씬 수월하다.

✅ GTID란?
- Global Transaction Identifier
- 각 트랜잭션에 대해 전역 고유 ID를 부여함
- GTID는 다음과 같은 형태로 구성됨
UUID:트랜잭션번호
예: 3E11FA47-71CA-11E1-9E33-C80AA9429562:32
이 고유 ID를 통해 Master와 Slave는 복제된 트랜잭션 여부를 명확히 판단할 수 있다.
반응형
🔁 기존 복제 방식 vs GTID 방식
| 항목 | 전통적 방식 | GTID 기반 복제 |
| 복제 위치 추적 | binlog 파일명 + 위치 수동 설정 | GTID 기반 자동 추적 |
| 장애 복구 | 복잡하고 수동 작업 필요 | 자동 추적으로 간단함 |
| 마스터 전환 | 수동 재설정 필요 | AUTO_POSITION=1로 쉽게 처리 |
| 운영 안정성 | binlog 삭제 시 복제 실패 가능 | 비교적 안정적 |
기존 방식은 설정 정확도에 따라 복제 누락, 중복 적용, 복잡한 복구가 발생하기 쉬운 반면
GTID는 운영 자동화에 최적화된 구조라고 볼 수 있다.
🛠️ GTID 복제 설정 방법
① Master, Slave 공통 설정 (my.cnf)
[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
enforce-gtid-consistency = ON
gtid_mode = ON
- enforce-gtid-consistency는 반드시 ON
- gtid_mode는 ON 또는 ON_PERMISSIVE (업그레이드 시)
설정 변경 후 MySQL 재시작
sudo systemctl restart mysql
② Master에서 복제 계정 생성
CREATE USER 'repl'@'%' IDENTIFIED BY 'replpass';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
③ Slave에서 복제 연결 설정
CHANGE REPLICATION SOURCE TO
SOURCE_HOST = 'Master_IP',
SOURCE_USER = 'repl',
SOURCE_PASSWORD = 'replpass',
AUTO_POSITION = 1;
- GTID를 사용하므로 SOURCE_LOG_FILE, POSITION 불필요
- AUTO_POSITION = 1 옵션이 핵심
복제 시작
START REPLICA;
상태 확인
SHOW REPLICA STATUS\G
Retrieved_Gtid_Set, Executed_Gtid_Set이 출력되면 GTID가 정상 작동 중이다.
반응형
📦 GTID 관련 주요 명령어
SELECT @@GLOBAL.gtid_mode;
SELECT @@GLOBAL.gtid_executed;
SHOW MASTER STATUS;
- gtid_mode: 현재 서버의 GTID 설정 상태
- gtid_executed: 현재까지 실행된 GTID 목록
- SHOW MASTER STATUS: GTID 복제 기준 위치 확인 가능
🧠 GTID 복제 실무 장점
- 마스터 장애 시 Failover가 간단해짐
- 자동화 도구(PMM, Orchestrator 등)와 호환성 좋음
- 복제 중단 후 재시작 시에도 GTID 기준으로 정확하게 이어짐
- 여러 개의 Slave 구성 시에도 동기화 상태 추적이 쉬움
⚠️ 주의할 점
- GTID를 활성화한 이후에는 비GTID 방식으로 되돌릴 수 없음
- enforce-gtid-consistency = ON 상태에서는 일부 제약이 있음
(예: CREATE TEMPORARY TABLE, UPDATE ... LIMIT 등) - 서버 간 시간 차이, binlog 보존 설정 등은 여전히 관리 필요
- 반드시 binlog_format = ROW 설정 권장
📘 공식 문서 참고
https://dev.mysql.com/doc/refman/8.0/en/replication-gtids.html
반응형
'DB' 카테고리의 다른 글
| [MySQL] (고가용성3️⃣) MHA 구성 방법과 장애 복구 흐름 정리 (2) | 2025.07.17 |
|---|---|
| [MySQL] (고가용성2️⃣) Group Replication 구성과 특징 완전 분석 (0) | 2025.07.17 |
| [MySQL] (고가용성1️⃣) MySQL 고가용성 개념과 클러스터링 구조 이해하기 (3) | 2025.07.17 |
| [MySQL] (복제구조4️⃣) 복제 환경에서 자주 발생하는 문제와 해결법 (2) | 2025.07.16 |
| [MySQL] (복제구조2️⃣) Master-Slave 복제 설정 실습 가이드 (0) | 2025.07.16 |
| [MySQL] (복제구조1️⃣) MySQL 복제란? 구조와 개념 완전 정리 (0) | 2025.07.16 |
| [MySQL] (보안설정5️⃣) 실무에서 자주 놓치는 보안 설정 체크리스트 (0) | 2025.07.16 |
| [MySQL] (보안설정4️⃣) SSL 인증서 적용하기: OpenSSL 기반 실습 가이드 (1) | 2025.07.16 |