Database/mysql & mariaDB
MySQL 백업 비교: mysqldump vs mydumper + myloader
봉의일상
2025. 6. 28. 23:14
MySQL/MariaDB 환경에서 데이터 백업을 위한 대표적인 두 가지 방법은 mysqldump와 mydumper입니다.
이번 글에서는 각 도구의 특징과 실제 사용 사례, 그리고 복원 시 myloader를 사용하는 구조까지 함께 살펴보며 어떤 상황에 어떤 도구를 선택하는 것이 좋을지 정리해 보겠습니다.
1. mysqldump: MySQL 기본 제공 백업 도구
특징
- MySQL 클라이언트에 기본 내장
- 텍스트 기반 SQL 파일로 백업
- 단일 스레드로 작동
- 다양한 백업 옵션 제공 (--no-data, --routines, --triggers 등)
백업 예시
mysqldump -u root -p \
--single-transaction --routines --triggers --events \
--default-character-set=utf8mb4 \
mydb > /backup/mydb_dump.sql
복원
mysql -u root -p mydb < /backup/mydb_dump.sql
장점
- 간단하고 범용적으로 사용 가능
- SQL 기반으로 관리 및 버전 관리 용이
- 설치 필요 없음
단점
- 대용량 백업 시 느림
- 트랜잭션 중단 시 복원 실패 가능
- 복잡한 외래키/관계로 인한 복원 순서 문제 발생 가능
2. mydumper + myloader: 멀티스레드 기반 고속 백업/복원
특징
- 멀티스레드로 병렬 백업 및 복원 지원
- 테이블/쿼리 단위로 파일 분리
- DDL(스키마)와 데이터 분리 백업 가능 (--no-schemas)
- 별도 설치 필요
백업 예시
mydumper \
-h mydbhost \
-u myuser \
-p mypass \
-B mydb \
-o /backup/mydb \
--threads 4 \
--compress \
--no-schemas
복원 예시
myloader \
-h mydbhost \
-u myuser \
-p mypass \
-B mydb \
-d /backup/mydb \
--threads 4
장점
- 대용량에서도 빠른 백업/복원 가능
- 병렬 처리로 시간 단축
- 락 최소화 옵션 제공 (--less-locking, --use-savepoints 등)
- 백업 데이터 관리 유연성 높음
단점
- 별도 설치 필요
- 결과물이 SQL이 아닌 구조화된 파일이라 가독성 낮음
- 복원 시 myloader 필수
실전 전략: DDL 분리 + 데이터 병렬 백업
대부분 실무에서는 DDL과 데이터를 분리해 백업합니다. 그 이유는 다음과 같습니다:
- 외래키, 트리거 등으로 인해 데이터 삽입 전에 테이블 구조를 먼저 정의해야 함
- 순서 제어 가능 (DDL → 데이터 → 기타 오브젝트)
비교 요약표
항목 | mysqldump | mydumper + myloader |
병렬 처리 | 불가 (단일 스레드) | 가능 (멀티 스레드) |
속도 | 느림 | 빠름 |
DDL/데이터 분리 | 가능 (--no-data) | 가능 (--no-schemas) |
복원 방식 | SQL 실행 | 파일 기반 병렬 복원 |
대용량 적합성 | 낮음 | 높음 |
설치 필요 여부 | 없음 | 있음 |
백업 결과 | 하나의 SQL 파일 | 다수의 파일 (압축 가능) |
결론 및 추천
상황 | 추천 도구 | 이유 |
소규모, 간단한 백업/복원 | mysqldump | 설치 간단함 |
대용량, 병렬 처리로 시간 단축이 필요한 경우 | mydumper + myloader | 성능, 안정성 우수 |
DDL을 직접 관리하거나 분리하고 싶은 경우 | mysqldump + mydumper 혼합 | 유연성, 제어력 확보 |
마무리
mysqldump는 여전히 유용한 기본 도구지만, 대용량이나 성능 최적화가 필요한 환경에서는 mydumper 조합이 훨씬 효과적입니다. 또한, 트리거, 제약조건, 외래키 순서에 민감한 환경에서는 DDL과 데이터를 분리하는 전략이 안정성과 확장성을 동시에 확보할 수 있는 좋은 방법입니다.