반응형
MySQL의 기본 백업 도구인 mysqldump는 가장 많이 사용되는 논리 백업 툴이다.
SQL 구문 형식으로 데이터를 덤프하여 이식성과 가독성이 좋고, 간편하게 복원할 수 있다.

✅ mysqldump란?
mysqldump는 MySQL에서 제공하는 CLI(Command Line Interface) 백업 유틸리티다.
데이터베이스나 테이블을 SQL 파일로 백업해 저장하며, 해당 파일을 다시 실행하여 데이터를 복원할 수 있다.
mysqldump -u [사용자] -p [옵션] [DB명] > backup.sql
파일 형식은 SQL이므로, 사람이 읽기 쉽고, 다른 MySQL 서버에도 쉽게 이식할 수 있다는 장점이 있다.
반응형
🧪 가장 기본적인 백업 예제
전체 데이터베이스 백업
mysqldump -u root -p --all-databases > full_backup.sql
특정 DB만 백업
mysqldump -u root -p mydb > mydb_backup.sql
특정 테이블만 백업
mysqldump -u root -p mydb table1 table2 > mydb_tables.sql
⚙️ 자주 쓰는 주요 옵션 정리
| 옵션 | 설명 |
| --all-databases | 전체 데이터베이스 백업 |
| --databases | 복수 DB 백업 시 사용 (--databases db1 db2) |
| --no-data | 스키마만 백업 (데이터 제외) |
| --add-drop-table | DROP TABLE IF EXISTS 포함 |
| --single-transaction | InnoDB 백업 시 락 없이 안정적인 덤프 |
| --routines | 프로시저, 함수 포함 |
| --events | 이벤트 스케줄러 포함 |
| --set-gtid-purged=OFF | GTID 설정 제거 (복원 시 충돌 방지) |
예시
mysqldump -u root -p mydb --routines --events --single-transaction > mydb_all.sql
반응형
🔁 백업 파일 복원 방법
기본 복원 방법
mysql -u root -p mydb < mydb_backup.sql
주의: mydb는 백업 전에 미리 생성되어 있어야 한다. 아래와 같이 복원 전 DB를 생성하자.
CREATE DATABASE mydb;
복수 DB 또는 전체 DB를 복원할 경우
mysql -u root -p < full_backup.sql
🧠 실무에서 자주 쓰는 백업 스크립트 예제
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR="/home/backup/mysql"
DB_USER="root"
DB_PASS="password"
DB_NAME="mydb"
mkdir -p ${BACKUP_DIR}
mysqldump -u ${DB_USER} -p${DB_PASS} --routines --events --single-transaction ${DB_NAME} > ${BACKUP_DIR}/${DB_NAME}_${DATE}.sql
이 스크립트를 crontab에 등록하면 매일 자동 백업도 가능하다.
0 3 * * * /home/backup/backup.sh
⚠️ 실무에서 자주 발생하는 문제와 주의사항
- 대용량 백업 시 커넥션 끊김 현상
→ --single-transaction을 꼭 붙이고, 네트워크 문제 방지 필요 - GTID 활성화 환경에서 복원 오류
→ --set-gtid-purged=OFF 옵션을 추가 - 인코딩 문제로 한글 깨짐 발생
→ 백업 시 --default-character-set=utf8mb4 사용 - Trigger, Procedure 누락
→ --routines, --triggers 옵션 포함 여부 확인 - Binary Log 연계 안됨
→ --master-data=2 옵션으로 binary log 위치 정보 삽입 가능 (복제 구성용)
반응형
📋 실제 운영 환경 예시
고객정보 DB는 매일 새벽 4시 mysqldump로 백업되고, 백업파일은 NAS와 AWS S3에 업로드된다.
백업 스크립트는 --single-transaction, --routines, --events 옵션을 포함하며, 백업 파일 이름에는 날짜가 붙는다.
복원 테스트는 주기적으로 별도 Dev 서버에서 수행된다.
🧩 mysqldump vs 다른 백업 도구 비교
| 도구 | 장점 | 단점 |
| mysqldump | 사용 간편, SQL 파일로 이식성 높음 | 속도 느림, 대용량 부적합 |
| xtrabackup | 빠른 물리 백업, 온라인 백업 가능 | 설정 복잡, 도구 설치 필요 |
| mysqlpump | 병렬 백업 지원 | 아직 널리 쓰이지 않음 |
mysqldump는 속도보다는 간편함과 이식성 중심의 백업 도구로 이해하면 된다.
✅ 정리
- mysqldump는 SQL 기반의 논리 백업 도구로 실무에서 가장 널리 사용된다.
- 단순한 명령어로 전체 DB, 특정 DB, 특정 테이블을 백업할 수 있다.
- 옵션 조합에 따라 프로시저, 이벤트, 트리거, 스키마만 등 다양한 백업이 가능하다.
- 복원은 mysql < backup.sql 형태로 수행하며, 데이터베이스가 미리 생성되어 있어야 한다.
- 스크립트 자동화와 주기적 복원 테스트를 병행해야 진짜 백업 전략이 완성된다.
🔗 공식 문서 참고
MySQL 8.0 Reference Manual - mysqldump — A Database Backup Program
반응형
'DB' 카테고리의 다른 글
| [MySQL] (백업/복구6️⃣) 백업 복구 실수 방지 체크리스트와 실무 팁 💡 (4) | 2025.07.12 |
|---|---|
| [MySQL] (백업/복구5️⃣) 백업 자동화 스크립트 실무 적용 예제 🤖 (2) | 2025.07.12 |
| [MySQL] (백업/복구4️⃣) PITR(Point In Time Recovery) 원리와 설정 실습 (2) | 2025.07.12 |
| [MySQL] (백업/복구3️⃣) Binary Log 기반 백업 전략과 설정법 (2) | 2025.07.12 |
| [MySQL] (백업/복구1️⃣) 백업의 모든 것: 개념, 필요성, 전략 총정리 (0) | 2025.07.12 |
| [MySQL] (권한관리7️⃣) 사용자 관리 실수 방지 체크리스트 (0) | 2025.07.11 |
| [MySQL] (권한관리6️⃣) 사용자 권한 확인 및 변경, 삭제 실무 명령어 정리 (2) | 2025.07.11 |
| [MySQL] (권한관리5️⃣) 비밀번호 관리와 인증 보안 강화 전략 (0) | 2025.07.11 |