반응형
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