mysqldump로 GTID 정보를 포함한 일관된 논리 백업 수행
MySQL백업 및 PITR명령어
mysqldump -h db1 -u backup -p \
--single-transaction --source-data=2 --set-gtid-purged=ON \
--routines --events --triggers --hex-blob \
--all-databases | gzip > /backup/full_$(date +%F_%H%M).sql.gz
# Restore: GTID sets must not overlap on the target
zcat /backup/full_2026-10-08_0200.sql.gz | mysql -h db2 -u root -p하는 일
InnoDB 테이블을 단일 일관 스냅샷 안에서 덤프하고, 맨 위에 binlog 파일 / 위치(주석)와 SET @@GLOBAL.GTID_PURGED 문을 기록하여 덤프를 replica 초기화나 binlog 기반 PITR의 시작점으로 사용할 수 있게 한다.
사용 시점
수십 GB 이하의 데이터베이스, 스키마 / 테이블 이동, 버전 간 논리 마이그레이션용.
주의
--single-transaction은 InnoDB에서만 일관성이 있으며 MyISAM 테이블은 일관성이 없는 상태로 덤프된다. 덤프 중 테이블에 DDL(ALTER / RENAME / TRUNCATE)이 실행되면 덤프가 실패하거나 테이블이 누락된다. --source-data / --set-gtid-purged는 시작 시 짧은 global read lock을 잡는다(RELOAD 권한 필요). 그 순간 장시간 쿼리가 실행 중이면 락이 대기하는 동안 모든 쓰기가 멈춘다. 부분 덤프(--databases)도 모든 GTID를 기록하므로 일부만 다른 서버로 옮길 때는 --set-gtid-purged=OFF를 사용한다. 덤프는 단일 스레드이므로 대용량 데이터에는 MySQL Shell dump나 XtraBackup을 권장한다.