MySQL mysqldump 백업 및 복원

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-transactionInnoDB 일관 스냅샷 (락 최소화)
--routines저장 프로시저/함수 포함
--triggers트리거 포함 (기본 ON)
-h 호스트원격 호스트 지정
-P 포트포트 지정

DB 서버를 중단하지 않고 실행 중인 상태에서 InnoDB를 백업할 때는 다음처럼 쓰면 좋다.

mysqldump -u 사용자명 -p --single-transaction --routines 데이터베이스명 > backup.sql