DBAtlas · 데이터베이스 운영 아틀라스

MySQL Shell로 병렬 덤프 / 로드(util.dumpInstance, loadDump)

MySQL백업 및 PITR

명령어

# Parallel, zstd-compressed, consistent instance dump
mysqlsh backup@db1:3306 -- util dump-instance /backup/dump_20261008 --threads=8 --compression=zstd --consistent=true
# Single schema
mysqlsh backup@db1:3306 -- util dump-schemas shop --outputUrl=/backup/shop_20261008 --threads=8

# Load: local_infile must be temporarily ON on the target
mysql -h db2 -u root -p -e "SET GLOBAL local_infile = ON"
mysqlsh root@db2:3306 -- util load-dump /backup/dump_20261008 --threads=8 --skipBinlog=false
mysql -h db2 -u root -p -e "SET GLOBAL local_infile = OFF"

하는 일

테이블을 chunk로 나누어 여러 스레드로 덤프 / 로드하며, 덤프와 복원 모두 mysqldump보다 몇 배 빠르다. 덤프 디렉터리는 GTID와 binlog 좌표를 @.json에 저장한다.

사용 시점

수백 GB 규모의 논리 백업, 업그레이드 중 논리 마이그레이션, 온프레미스 → 클라우드(RDS, HeatWave) 이전용.

주의

--consistent=true는 짧은 global read lock / backup lock을 잡으며 장시간 쿼리가 실행 중이면 쓰기가 대기한다. loadDump는 LOAD DATA LOCAL을 사용하므로 대상에 local_infile=ON이 필요하며 이후에는 꺼야 한다. 중단된 로드는 멈춘 지점부터 재개된다(progress 파일). 처음부터 다시 하려면 --resetProgress를 사용한다. 사용자 계정은 기본적으로 로드되지 않는다(--loadUsers=true). --skipBinlog=true는 로드 중 binlog 기록을 끄므로 대상에 replica가 있으면 false로 둔다.

DBAtlas에서 열기 →

관련 항목