데이터베이스

mysqldump에 대해 알아보겠습니다.

forward error correction Circle 2025. 2. 7. 08:39
반응형

Ⅰ. mysqldump 란?

MySQL 및 MariaDB 데이터베이스의 백업을 생성하는 유틸리티입니다. 백업뿐만 아니라, 데이터의 이관이나 복제 등과 같이 어떤 MySQL 서버에서 다른 서버로 데이터를 옮기는 경우에 많이 사용됩니다.

Ⅱ. mysqldump 기본 구조

mysqldump -u [사용자] -p [데이터베이스명] > 백업파일.sql

-u: 사용자 이름 지정
-p: 비밀번호 입력 요구
[데이터베이스명]: 백업할 데이터베이스
> 백업파일.sql: 덤프를 저장할 파일

Ⅲ. mysqldump 옵션

ⅰ. 기본 옵션

옵션 설명
-u [사용자] MySQL 사용자 지정
-p 비밀번호 입력 요청
-h [호스트] 원격 서버 백업 시 사용 (예: -h 192.168.0.117)
-P [포트번호] MySQL 서버 포트 지정 (기본값: 3306)
-A, --all-databases 모든 데이터베이스 백업
--databases DB1 DB2 여러 개의 데이터베이스 백업
DB_NAME [TABLES] 특정 데이터베이스 및 테이블만 백업

 

ⅱ. 출력 관련 옵션

옵션 설명
-r [파일명] 백업 파일 저장 (예: -r backup.sql)
-t, --no-create-info 테이블 구조 없이 데이터만 덤프
-d, --no-data 테이블 구조만 덤프 (데이터 제외)
--single-transaction InnoDB 백업 시 트랜잭션을 유지하면서 백업 (일관성 보장)
--skip-comments SQL 주석 제외
--add-drop-table DROP TABLE IF EXISTS 포함하여 덤프
--add-locks LOCK TABLES 문 추가 (성능 향상)

 

ⅲ. 압축 및 포맷 관련 옵션

옵션 설명
--compact 덤프 크기 최소화 (주석, 추가 명령 생략)
--compress MySQL 서버와의 데이터 전송을 압축
--hex-blob BLOB 데이터를 16진수(hex)로 덤프
--tab=[디렉토리] CSV 같은 테이블별 텍스트 파일 생성

 

ⅳ. 복원 관련 옵션

옵션 설명
--no-create-db CREATE DATABASE 문 없이 덤프
--default-character-set=utf8mb4 기본 문자셋 지정
--disable-keys ALTER TABLE ... DISABLE KEYS 포함 (복원 속도 향상)

Ⅳ. mysqldump 백업 예시

ⅰ. 전체 데이터베이스 백업

mysqldump -u root -p --all-databases > all_backup.sql

--all-databases: 모든 데이터베이스 백업
 


ⅱ. 특정 테이블만 백업

mysqldump -u root -p mydb table1 table2 > tables_backup.sql

mydb: 백업할 데이터베이스
table1 table2: 특정 테이블만 백업


ⅲ. 구조(스키마)만 백업

mysqldump -u root -p --no-data mydb > schema_backup.sql

--no-data: 데이터 없이 테이블 구조만 백업


ⅳ. 데이터만 백업

mysqldump -u root -p --no-create-info mydb > data_backup.sql

--no-create-info: 테이블 구조 없이 데이터만 덤프


ⅴ. 백업 파일 압축하기

mysqldump -u root -p mydb | gzip > mydb_backup.sql.gz

gzip: 압축 저장



반응형