본문 바로가기
삵

mysqldump 락 없이 일관성 백업하기

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

운영 중인 InnoDB 데이터베이스를 서비스 멈춤 없이 일관성 있게 논리 백업할 때 쓰는 옵션입니다. --single-transaction을 주면 mysqldump가 덤프 시작 시점에 REPEATABLE READ로 트랜잭션을 열어 그 시점의 일관된 스냅샷을 뜹니다. 테이블을 잠그지 않으므로 다른 클라이언트의 읽기와 쓰기는 그대로 돌아갑니다. 이 옵션을 주면 --lock-tables는 자동으로 꺼집니다(상호 배타).

mysqldump --single-transaction --databases sarc > sarc.sql

주의할 점이 둘 있습니다. 일관성이 보장되는 건 InnoDB 테이블뿐이고, MyISAM이나 MEMORY 테이블은 덤프 중에도 상태가 바뀔 수 있습니다. 그리고 덤프가 도는 동안 다른 세션에서 ALTER/CREATE/DROP/RENAME/TRUNCATE TABLE을 실행하면 일관된 읽기가 그 DDL과 격리되지 않아 내용이 깨지거나 실패할 수 있으니 피해야 합니다.

참고로 gtid_mode=ON이면서 gtid_purged=ON|AUTO인 환경에서는 --single-transaction에 RELOAD 또는 FLUSH_TABLES 권한이 필요합니다(MySQL 8.0.32부터).

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

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