본문 바로가기
Tech Notes/Mysql & MariaDB

mysqldump 옵션 및 사용 방법 정리

by gbmin 2023. 6. 8.
반응형

MySQL 사용자들에게 가장 널리 알려진 백업 도구 중 하나가 바로 mysqldump이다. 이 명령어 도구는 MySQL 데이터베이스의 전체 또는 일부를 백업하는 데 사용할 수 있다. mysqldump는 다양한 옵션을 제공하여 사용자의 특정 요구사항에 맞는 백업을 수행할 수 있게 해 준다. 이 글에서는 mysqldump의 주요 기능과 함께 가장 자주 사용되는 옵션들, 그리고 실제 사용 예제를 통해 이 도구를 효과적으로 활용하는 방법을 정리하였다.


1. 기본 사용 방법

mysqldump [옵션] [데이터베이스명] > [백업파일명.sql]

 

 

2. 주요 옵션

옵션 설명
-u 사용자명, --user=사용자명 MySQL 서버에 로그인 사용자명
-p, --password 사용자 암호를 입력하도록 요청
-h 호스트명, --host=호스트명 MySQL 서버의 호스트명
-A, --all-databases 모든 데이터베이스를 덤프
-Y, --all-tablespaces 모든 테이블 스페이스를 덤프
--add-drop-database 덤프 파일에 DROP DATABASE 문을 추가
--add-drop-table 덤프 파일에 DROP TABLE 문을 추가
--add-locks INSERT 문 주위에 잠금을 추가합니다.
-i, --comments 추가 정보를 주석으로 작성
--compatible=name 덤프를 주어진 모드와 호환되도록 변경
-c, --complete-insert INSERT 문을 완전한 형식으로 사용
-a, --create-options 모든 MySQL 특정 생성 옵션을 포함
-B, --databases 여러 개의 데이터베이스를 덤프
--debug-check 종료 시 메모리 및 열린 파일 사용
--debug-info 종료 시 일부 디버그 정보를 출력
--default-character-set=name 기본 문자 집합을 설정
--delayed-insert INSERT DELAYED를 사용하여 행을 삽입
-U, --events 이벤트 덤프
--extended-insert 확장 형태 INSERT 문을 사용
-G, --no-create-db CREATE DATABASE 문을 생성하지 않음
-T, --no-create-info CREATE TABLE 문을 생성하지 않음
-n, --no-data 데이터를 덤프하지 않음
-t, --no-create-tables 테이블을 생성하지 않음
-t, --tables=name 특정 테이블만 덤프
-r, --no-routines 루틴 (프로시저 및 함수) 덤프하지 않음
-R, --routines-only 루틴 (프로시저 및 함수) 덤프
-s, --no-create-schemas 스키마를 생성하지 않음
-t, --no-tablespaces 테이블 스페이스 정보를 덤프하지 않음
-n, --no-set-names SET NAMES 문을 생성하지 않음
--lock-all-tables 모든 테이블에 대해 READ LOCK을 사용
--lock-tables 덤프 중에 모든 테이블을 LOCK
-L, --skip-lock-tables 덤프를 위해 테이블을 잠그지 않음
--opt OPTIMIZE TABLE 문을 생성
-x, --quick 하나의 INSERT 문에 모든 행을 추가
-Q, --quote-names 테이블 및 열 이름에 따옴표를 추가
--compress 덤프 파일을 압축
-C, --create-options CREATE TABLE 문에 추가 옵션을 포함
--hex-blob BLOB 컬럼을 16진수 형식으로 표시
-xml XML 형식으로 덤프를 생성

 

 

3. 사용 예시

  • 모든 데이터베이스 덤프
mysqldump -u root -p --all-databases > filename.sql
  • 모든 테이블 스페이스를 포함하여 덤프
mysqldump -u root -p --all-tablespaces DBNAME > filename.sql
  • 테이블 스페이스를 덤프 하지 않음
mysqldump -u root -p --no-tablespaces DBNAME > filename.sql
  • 완전한 INSERT 문을 사용하여 덤프
mysqldump -u root -p --complete-insert DBNAME > filename.sql
  • 덤프를 압축
mysqldump -u root -p --compress DBNAME > filename.sql
  • CREATE TABLE 문에 추가 옵션 포함
mysqldump -u root -p --create-options DBNAME > filename.sql
  • 특정 데이터베이스만 덤프
mysqldump -u root -p --databases DBNAME > filename.sql
  • 인덱스 비활성화한 상태로 덤프
mysqldump -u root -p --disable-keys DBNAME > filename.sql
  • 이벤트를 덤프
mysqldump -u root -p --events DBNAME > filename.sql
  • 확장된 INSERT 문을 사용하여 덤프
mysqldump -u root -p --extended-insert DBNAME > filename.sql
  • 로그를 플러시한 후 덤프
mysqldump -u root -p --flush-logs DBNAME > filename.sql
  • 권한 정보를 덤프 하지 않음
mysqldump -u root -p --flush-privileges DBNAME > filename.sql
  • 특정 테이블 제외 하고 덤프
mysqldump -u root -p --ignore-table=DBNAME.table_name > filename.sql
  • 마스터 호스트 및 포트 정보를 포함하여 덤프
mysqldump -u root -p --include-master-host-port DBNAME > filename.sql
  • 모든 테이블을 락 처리하고 덤프
mysqldump -u root -p --lock-all-tables DBNAME > filename.sql
  • 테이블 락 처리하고 덤프
mysqldump -u root -p --lock-tables DBNAME > filename.sql
  • 오류 로그 파일 지정
mysqldump -u root -p --log-error=error.log DBNAME > filename.sql
  • 최대 허용 패킷 크기 설정
mysqldump -u root -p --max-allowed-packet=1024 DBNAME > filename.sql
  • 루틴(함수, 프로시저 등)을 덤프
mysqldump -u root -p --routines DBNAME > filename.sql
  • 덤프에 날짜 정보 포함
mysqldump -u root -p --dump-date DBNAME > filename.sql
  • 완전한 INSERT 구문 및 확장된 INSERT 구문 비활성화 칼럼별로 insert 쿼리 생성됨.
mysqldump -u root -p --complete-insert=false --extended-insert=false DBNAME > filename.sql
  • utf8mb4 형식 이모지의 백업과 프로시저 함수 같이 백업
mysqldump -u root -p --default-character-set=utf8mb4 -R DBNAME > filename.sql