gbmin's Tech Notes

서버 구축 및 유지보수, 클라우드 컴퓨팅, 네트워크 보안, IT 분야 기술 노트. :)

Tech Notes/Mysql & MariaDB

mysqldump 옵션 및 사용 방법 정리

gbmin 2023. 6. 8. 16:23

mysqldump은 MySQL 데이터베이스를 백업하기 위한 명령어 도구이다. 자주사용 하는 옵션과 사용 방법에 대한 예제 정리를 하였다.

 

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