mysqldump 기본
mysqldump는 MySQL 데이터를 SQL 덤프 파일로 내보내는 클라이언트 도구다. 백업 후 mysql 클라이언트로 import 한다.
1. DB 전체 백업
서버에 있는 모든 데이터베이스를 백업한다.
mysqldump -u 사용자명 -p --all-databases > backup_all.sql
--all-databases: 모든 DB 포함-p: 비밀번호 입력 프롬프트
복원
mysql -u 사용자명 -p < backup_all.sql
2. 특정 DB 백업
하나의 데이터베이스만 백업한다.
mysqldump -u 사용자명 -p 데이터베이스명 > backup_db.sql
복원
mysql -u 사용자명 -p 데이터베이스명 < backup_db.sql
복원 전에 해당 DB가 없으면 생성해야 한다.
mysql -u 사용자명 -p -e "CREATE DATABASE IF NOT EXISTS 데이터베이스명;"
mysql -u 사용자명 -p 데이터베이스명 < backup_db.sql
3. 특정 테이블 + 데이터 백업
한 DB 안의 특정 테이블과 데이터만 백업한다.
mysqldump -u 사용자명 -p 데이터베이스명 테이블1 테이블2 > backup_tables.sql
복원
mysql -u 사용자명 -p 데이터베이스명 < backup_tables.sql
4. 특정 테이블 스키마만 백업 (데이터 제외)
테이블 구조만 필요할 때는 --no-data 옵션을 사용한다.
mysqldump -u 사용자명 -p --no-data 데이터베이스명 테이블명 > backup_schema.sql
여러 테이블도 가능하다.
mysqldump -u 사용자명 -p --no-data 데이터베이스명 테이블1 테이블2 > backup_schema.sql
복원
mysql -u 사용자명 -p 데이터베이스명 < backup_schema.sql
옵션 정리
| 옵션 | 설명 |
|---|---|
--all-databases | 모든 DB 백업 |
--no-data | 스키마만 백업, 데이터 제외 |
--single-transaction | InnoDB 일관 스냅샷 (락 최소화) |
--routines | 저장 프로시저/함수 포함 |
--triggers | 트리거 포함 (기본 ON) |
-h 호스트 | 원격 호스트 지정 |
-P 포트 | 포트 지정 |
DB 서버를 중단하지 않고 실행 중인 상태에서 InnoDB를 백업할 때는 다음처럼 쓰면 좋다.
mysqldump -u 사용자명 -p --single-transaction --routines 데이터베이스명 > backup.sql