본문 바로가기

mysqldump으로 InnoDB 무정지 백업: --single-transaction과 --source-data 함께 쓰기

조회 0 · 댓글 0
열린기술자열린기술자작성자2026년 8월 20일

운영 중인 InnoDB DB를 서비스 멈추지 않고 논리 백업할 때 쓰는 조합입니다. --single-transaction은 덤프 시작 시 BEGIN으로 트랜잭션을 열어 그 시점의 일관된 스냅샷을 뜹니다. 다른 클라이언트를 오래 잠그지 않는다는 게 핵심입니다. 다만 트랜잭션 스토리지 엔진(InnoDB)에서만 의미가 있고, MyISAM 테이블은 이 방식으로 일관성이 보장되지 않습니다.

mysqldump --single-transaction --source-data=2 --databases sarc > sarc.sql

복제 구성이나 PITR용으로 바이너리 로그 좌표가 필요하면 --source-data(MySQL 8.0.26부터, 그 이전 버전은 --master-data)를 같이 줍니다. 둘을 함께 쓰면 --single-transaction 덕분에 덤프 시작 순간에만 글로벌 read lock을 아주 짧게 잡아 좌표를 기록하고 바로 풉니다. =2로 주면 CHANGE 구문이 주석 처리되어 들어갑니다.

주의할 점 하나. --single-transaction 덤프가 도는 동안 다른 세션에서 ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE 같은 DDL을 실행하면 덤프 파일이 깨질 수 있습니다. 백업 창구에서는 스키마 변경을 피하세요. 또 문서에 따르면 8.0.32 이전 버전에서는 GTID 환경에서 --set-gtid-purged=ON과 --single-transaction 조합이 결과에 불일치를 낳을 수 있다고 경고합니다. 이 문제는 MySQL 8.0.32에서 해소되었으므로, 그 이전 버전을 쓴다면 버전과 옵션 조합을 먼저 확인하세요.

🔗 https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html

🔗 https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/mysqldump.html

로그인 후 답글을 남길 수 있습니다.