Loading...
MySQL 9.5 Reference Manual 9.5의 6.5.4 mysqldump — A Database Backup Program의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
mysqldump client 유틸리티는 logical backups을 수행하여, 원래의 데이터베이스 객체 정의와 테이블 데이터를 재생성하기 위해 실행할 수 있는 SQL 문 집합을 생성합니다. 이 도구는 하나 이상의 MySQL 데이터베이스를 백업하거나 다른 SQL 서버로 전송하기 위해 덤프합니다. mysqldump 명령은 또한 CSV, 기타 구분된 텍스트, 또는 XML 포맷으로 출력물을 생성할 수 있습니다.
참고
여러 스레드를 사용한 병렬 덤프, 파일 압축, 진행 정보 표시뿐 아니라 Oracle Cloud Infrastructure Object Storage 스트리밍, MySQL HeatWave 호환성 검사 및 수정 같은 클라우드 기능을 제공하는 MySQL Shell dump utilities의 사용을 고려하십시오. 덤프는 MySQL Shell load dump utilities를 사용하여 MySQL Server 인스턴스 또는 MySQL HeatWave DB System으로 쉽게 임포트할 수 있습니다. MySQL Shell의 설치 방법은 여기에서 확인할 수 있습니다.
mysqldump는 덤프 대상 테이블에 대해 최소한
SELECT 권한,
덤프 대상 뷰에 대해 SHOW VIEW,
덤프 대상 트리거에 대해 TRIGGER,
--single-transaction 옵션을 사용하지 않을 경우
LOCK TABLES,
--no-tablespaces 옵션을 사용하지 않을 경우
PROCESS,
그리고 gtid_mode=ON 및
gtid_purged=ON|AUTO이 모두 설정된 상태에서
--single-transaction를 사용하는 경우
RELOAD 또는
FLUSH_TABLES 권한을 필요로 합니다.
특정 옵션은 옵션 설명에 명시된 대로 다른 권한을 요구할 수 있습니다.
덤프 파일을 다시 로드하려면, 그 안에 포함된 문들을 실행하는 데 필요한
권한이 있어야 하며, 예를 들어 해당 문으로 생성되는 객체에 대한
적절한 CREATE 권한이 필요합니다.
mysqldump 출력에는
데이터베이스 콜레이션을 변경하는
ALTER DATABASE 문이 포함될 수 있습니다.
이는 저장 프로그램을 덤프할 때 그들의 문자 인코딩을 보존하기 위해 사용될 수 있습니다.
이러한 문을 포함하는 덤프 파일을 다시 로드하려면,
해당 데이터베이스에 대한 ALTER 권한이 필요합니다.
참고
Windows의 PowerShell에서 출력 리디렉션을 사용하여 작성된 덤프는 UTF-16 인코딩을 가진 파일을 생성합니다:
1mysqldump [options] > dump.sql
그러나 UTF-16은 연결 문자 집합으로 허용되지 않으므로
(자세한 내용은
Impermissible Client Character Sets 참조),
덤프 파일을 올바르게 로드할 수 없습니다.
이 문제를 피하려면, ASCII 포맷으로 출력을 생성하는
--result-file 옵션을 사용하십시오:
1mysqldump [options] --result-file=dump.sql
서버에서 GTID가 활성화되어 있는 경우
(gtid_mode=ON),
덤프 파일에 시스템 테이블이 포함되어 있다면 해당 덤프 파일을 로드하는 것은 권장되지 않습니다.
mysqldump는
비트랜잭션 MyISAM 스토리지 엔진을 사용하는 시스템 테이블에 대해
DML 명령을 실행하며, GTID가 활성화된 상태에서는 이러한 조합이 허용되지 않습니다.
mysqldump의 장점에는 복원 전에 출력을 편리하고 유연하게
조회하거나 편집할 수 있다는 점이 포함됩니다.
개발 및 DBA 작업을 위해 데이터베이스를 복제하거나,
기존 데이터베이스의 약간 다른 변형을 테스트용으로 생성할 수 있습니다.
그러나 이 도구는 대량 데이터 백업용으로 빠르거나 확장성이 뛰어난 해결책으로 설계된 것은 아닙니다. 데이터 양이 매우 큰 경우 백업 단계가 합리적인 시간 안에 끝나더라도, SQL 문을 재실행하는 과정에서 삽입, 인덱스 생성 등으로 인한 디스크 I/O가 발생하므로 데이터를 복원하는 데 매우 오랜 시간이 걸릴 수 있습니다.
대규모 백업 및 복원을 위해서는 데이터 파일을 원래 포맷 그대로 복사하여 빠르게 복원할 수 있는 physical 백업이 더 적절합니다.
테이블이 주로 InnoDB 테이블이거나,
InnoDB와 MyISAM 테이블이 혼합된 경우,
MySQL Enterprise의 일부로 제공되는 mysqlbackup 사용을 고려하십시오.
이 도구는 최소한의 중단으로 InnoDB 백업에 대해 높은 성능을 제공하며,
MyISAM 및 기타 스토리지 엔진의 테이블도 백업할 수 있고,
다양한 백업 시나리오에 대응하기 위한 편리한 옵션을 다수 제공합니다.
자세한 내용은
Section 32.1, “MySQL Enterprise Backup Overview”를 참조하십시오.
mysqldump는 테이블 내용을 행 단위로 가져와 덤프하거나,
테이블의 전체 내용을 한 번에 가져와 메모리에 버퍼한 뒤 덤프할 수 있습니다.
대형 테이블을 덤프하는 경우 메모리 버퍼링은 문제가 될 수 있습니다.
테이블을 행 단위로 덤프하려면
--quick 옵션
(또는 --quick을 활성화하는
--opt)을 사용하십시오.
--opt 옵션(따라서
--quick도)은 기본적으로 활성화되어 있으므로,
메모리 버퍼링을 사용하려면
--skip-quick을 사용하십시오.
최신 버전의 mysqldump를 사용하여
아주 오래된 MySQL 서버로 재로드할 덤프를 생성하는 경우,
--opt 또는
--extended-insert 옵션 대신
--skip-opt 옵션을 사용하십시오.
mysqldump에 대한 추가 정보는 Section 9.4, “Using mysqldump for Backups”를 참조하십시오.
일반적으로 mysqldump를 사용하는 방법은 세 가지입니다. 하나 이상의 테이블 집합, 하나 이상의 전체 데이터베이스 집합, 또는 전체 MySQL 서버를 덤프하는 방식이며, 다음과 같이 사용합니다:
1mysqldump [options] db_name [tbl_name ...] 2mysqldump [options] --databases db_name ... 3mysqldump [options] --all-databases
전체 데이터베이스를 덤프하려면,
db_name 뒤에 어떠한 테이블도 지정하지 않거나,
--databases 또는
--all-databases 옵션을 사용합니다.
덤프에 모든 사용자 계정에 대한 정보를 포함시키려면
--users 옵션을 사용하십시오.
이 옵션은 mysqldump가
이 정보를 테이블 이전에 CREATE USER 및
GRANT 문 형태로 포함하게 합니다.
하나 이상의 사용자 계정에 대한 정보만 덤프하고
그 외 계정은 포함하지 않으려면,
--include-user 옵션을
사용자 계정당 한 번씩, 하나 이상 추가하십시오.
예를 들어, bob@dbsrv1과
joe@dbsrv1 (그리고 그 외 사용자는 없음)에 대한
사용자 계정 정보를 포함하려면, 필요한 다른 옵션은 생략하고
다음과 같이 mysqldump를 실행합니다:
1$> mysqldump --users --include-user=bob@dbsrv1 --include-user=joe@dbsrv1
--include-user로 지정하는 사용자 계정은
user@ host 형식으로 제공해야 합니다.
user 또는 host (또는 두 값 모두)에 대한 인용부호는
특정 경우에만 필요합니다. 이에 대한 정보는
--include-user 설명을 참조하십시오.
특정 계정을 하나 이상 제외하고
그 외 모든 사용자 계정의 정보를 포함하려면
--exclude-user 옵션을 사용하십시오.
이 옵션 역시 --include-user와 마찬가지로
user@ host 형식의 인자를 사용합니다.
예를 들어, 다음 mysqldump 실행은
bob@dbsrv1과 joe@dbsrv1을 제외한
모든 사용자 계정에 대한 정보를 덤프합니다:
1$> mysqldump --users --exclude-user=bob@dbsrv1 --exclude-user=joe@dbsrv1
--users를 지정하지 않으면
--include-user와 --exclude-user는 아무런 효과가 없습니다.
데이터베이스가 선택되지 않은 상태에서
mysqldump를
--users와 함께, 그러나
--databases 또는
--all-databases를 사용하지 않고 실행하면,
사용자 계정 정보만 덤프하고 그 외 정보나 테이블은 덤프하지 않습니다.
--users는
--flush-privileges 옵션과
호환되지 않으며, 두 옵션을 함께 사용하려고 하면 에러가 발생합니다.
해당 버전의 mysqldump가
지원하는 옵션 목록을 보려면,
mysqldump
--help를 실행하십시오.
mysqldump는 아래에 나열된 옵션을 지원하며,
이들은 커맨드 라인이나 옵션 파일의
[mysqldump], [client] 그룹 내에서 지정할 수 있습니다.
MySQL 프로그램에서 사용하는 옵션 파일에 대한 정보는
Section 6.2.2.2, “Using Option Files”를 참조하십시오.
Table 6.13 mysqldump Options
| Option Name | Description |
|---|---|
| --add-drop-database | 각 CREATE DATABASE 문 앞에 DROP DATABASE 문을 추가 |
| --add-drop-table | 각 CREATE TABLE 문 앞에 DROP TABLE 문을 추가 |
| --add-drop-trigger | 각 CREATE TRIGGER 문 앞에 DROP TRIGGER 문을 추가 |
| --add-drop-user | 각 CREATE USER 문 앞에 DROP USER 문을 추가; --users가 함께 지정되지 않으면 효과 없음 |
| --add-locks | 각 테이블 덤프를 LOCK TABLES 및 UNLOCK TABLES 문으로 감쌈 |
| --all-databases | 모든 데이터베이스의 모든 테이블을 덤프 |
| --allow-keywords | 키워드인 컬럼 이름 생성 허용 |
| --apply-replica-statements | 출력 시작 부분에 CHANGE REPLICATION SOURCE TO 문 앞에 STOP REPLICA를, 끝에 START REPLICA를 포함 |
| --apply-slave-statements | 출력 시작 부분에 CHANGE MASTER 문 앞에 STOP SLAVE를, 끝에 START SLAVE를 포함 |
| --bind-address | MySQL Server에 연결할 때 사용할 네트워크 인터페이스 지정 |
| --character-sets-dir | 문자 집합이 설치된 디렉터리 |
| --column-statistics | 통계 히스토그램 생성을 위한 ANALYZE TABLE 문을 출력에 기록 |
| --comments | 덤프 파일에 주석 추가 |
| --compact | 더 간결한 출력 생성 |
| --compatible | 다른 데이터베이스 시스템 또는 오래된 MySQL 서버와 더 호환되는 출력 생성 |
| --complete-insert | 컬럼 이름을 포함하는 완전한 INSERT 문 사용 |
| --compress | 클라이언트와 서버 간에 전송되는 모든 정보를 압축 |
| --compression-algorithms | 서버 연결에 허용되는 압축 알고리즘 |
| --create-options | CREATE TABLE 문에 모든 MySQL 고유의 테이블 옵션 포함 |
| --databases | 모든 name 인자를 데이터베이스 이름으로 해석 |
| --debug | 디버깅 로그 작성 |
| --debug-check | 프로그램 종료 시 디버깅 정보 출력 |
| --debug-info | 프로그램 종료 시 디버깅 정보, 메모리 및 CPU 통계 출력 |
| --default-auth | 사용할 인증 플러그인 |
| --default-character-set | 기본 문자 집합 지정 |
| --defaults-extra-file | 일반적인 옵션 파일에 더해 지정된 옵션 파일 읽기 |
| --defaults-file | 지정된 옵션 파일만 읽기 |
| --defaults-group-suffix | 옵션 그룹 suffix 값 |
| --delete-master-logs | replication 소스 서버에서 덤프 작업 후 binary log 삭제 |
| --delete-source-logs | replication 소스 서버에서 덤프 작업 후 binary log 삭제 |
| --disable-keys | 각 테이블에 대해, 키를 disable/enable하는 문으로 INSERT 문을 감쌈 |
| --dump-date | --comments가 주어지면 "Dump completed on" 주석으로 덤프 날짜 포함 |
| --dump-replica | replica의 소스 binary log 좌표를 나열하는 CHANGE REPLICATION SOURCE TO 문 포함 |
| --dump-slave | replica의 소스 binary log 좌표를 나열하는 CHANGE MASTER 문 포함 |
| --enable-cleartext-plugin | cleartext 인증 플러그인 활성화 |
| --events | 덤프된 데이터베이스에서 이벤트를 덤프 |
| --exclude-user | user@host 포맷으로, 제외할 계정 지정. --users가 함께 지정되지 않으면 효과 없음 |
| --extended-insert | multiple-row INSERT 구문 사용 |
| --fields-enclosed-by | --tab 옵션과 함께 사용되며, LOAD DATA의 해당 절과 같은 의미 |
| --fields-escaped-by | --tab 옵션과 함께 사용되며, LOAD DATA의 해당 절과 같은 의미 |
| --fields-optionally-enclosed-by | --tab 옵션과 함께 사용되며, LOAD DATA의 해당 절과 같은 의미 |
| --fields-terminated-by | --tab 옵션과 함께 사용되며, LOAD DATA의 해당 절과 같은 의미 |
| --flush-logs | 덤프 시작 전에 MySQL 서버 로그 파일 flush |
| --flush-privileges | mysql 데이터베이스를 덤프한 후 FLUSH PRIVILEGES 문 출력 |
| --force | 테이블 덤프 중 SQL 에러가 발생하더라도 계속 진행 |
| --get-server-public-key | 서버로부터 RSA public key 요청 |
| --help | 도움말 메시지 표시 후 종료 |
| --hex-blob | 바이너리 컬럼을 16진수 표기법으로 덤프 |
| --host | MySQL 서버가 위치한 호스트 |
| --ignore-error | 지정된 에러 무시 |
| --ignore-table | 지정된 테이블은 덤프하지 않음 |
| --ignore-views | 테이블 뷰 덤프 건너뜀 |
| --include-master-host-port | --dump-slave로 생성된 CHANGE MASTER 문에 MASTER_HOST/MASTER_PORT 옵션 포함 |
| --include-source-host-port | --dump-replica로 생성된 CHANGE REPLICATION SOURCE TO 문에 SOURCE_HOST 및 SOURCE_PORT 옵션 포함 |
| --include-user | user@host 포맷으로, 포함할 계정 지정. --users가 함께 지정되지 않으면 효과 없음 |
| --init-command | MySQL 서버에 연결 또는 재연결 후 실행할 단일 SQL 문; 이미 정의된 명령을 재설정 |
| --init-command-add | MySQL 서버에 연결 또는 재연결 후 실행할 추가 SQL 문을 더함 |
| --insert-ignore | INSERT 문 대신 INSERT IGNORE 문 작성 |
| --lines-terminated-by | --tab 옵션과 함께 사용되며, LOAD DATA의 해당 절과 같은 의미 |
| --lock-all-tables | 모든 데이터베이스에 걸쳐 모든 테이블 잠금 |
| --lock-tables | 덤프 전에 모든 테이블 잠금 |
| --log-error | 지정된 파일에 경고와 에러를 append |
| --login-path | .mylogin.cnf에서 login path 옵션 읽기 |
| --master-data | binary log 파일 이름과 위치를 출력에 기록 |
| --max-allowed-packet | 서버와 주고받는 패킷의 최대 길이 |
| --mysqld-long-query-time | slow query 임계값에 대한 세션 값 |
| --net-buffer-length | TCP/IP 및 소켓 통신을 위한 버퍼 크기 |
| --network-timeout | 더 큰 테이블 덤프를 허용하기 위해 네트워크 타임아웃 증가 |
| --no-autocommit | 각 덤프된 테이블의 INSERT 문을 SET autocommit = 0 및 COMMIT 문으로 감쌈 |
| --no-create-db | CREATE DATABASE 문을 기록하지 않음 |
| --no-create-info | 각 덤프된 테이블을 재생성하는 CREATE TABLE 문을 기록하지 않음 |
| --no-data | 테이블 내용을 덤프하지 않음 |
| --no-defaults | 옵션 파일을 읽지 않음 |
| --no-login-paths | login path 파일에서 login path를 읽지 않음 |
| --no-set-names | --skip-set-charset과 동일 |
| --no-tablespaces | 출력에 CREATE LOGFILE GROUP 또는 CREATE TABLESPACE 문을 기록하지 않음 |
| --opt | --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset에 대한 약어 |
| --order-by-primary | 각 테이블의 행을 primary key 또는 첫 번째 unique 인덱스 기준으로 정렬하여 덤프 |
| --output-as-version | 덤프에서 사용되는 replica 및 event 용어 수준을 결정; 오래된 버전과의 호환성용 |
| --password | 서버에 연결할 때 사용할 패스워드 |
| --password1 | 서버에 연결할 때 사용할 첫 번째 다중 요소 인증 패스워드 |
| --password2 | 서버에 연결할 때 사용할 두 번째 다중 요소 인증 패스워드 |
| --password3 | 서버에 연결할 때 사용할 세 번째 다중 요소 인증 패스워드 |
| --pipe | named pipe를 사용하여 서버에 연결 (Windows 전용) |
| --plugin-authentication-kerberos-client-mode | Windows에서 MIT Kerberos 라이브러리를 통한 GSSAPI pluggable authentication 허용 |
| --plugin-dir | 플러그인이 설치된 디렉터리 |
| --port | 연결에 사용할 TCP/IP 포트 번호 |
| --print-defaults | 프로그램 이름과 옵션 파일에서 읽은 모든 옵션을 출력 |
| --protocol | 사용할 전송 프로토콜 지정 |
| --quick | 테이블의 행을 서버에서 한 번에 한 행씩 가져옴 |
| --quote-names | backtick 문자로 식별자에 인용부호를 적용 |
| --replace | INSERT 문 대신 REPLACE 문 작성 |
| --result-file | 출력을 지정된 파일로 리디렉트 |
| --routines | 덤프된 데이터베이스에서 저장 루틴(procedure와 function)을 덤프 |
| --server-public-key-path | RSA public key가 포함된 파일의 경로 이름 |
| --set-charset | 출력에 SET NAMES default_character_set 추가 |
| --set-gtid-purged | 출력에 SET @@GLOBAL.GTID_PURGED를 추가할지 여부 |
| --shared-memory-base-name | shared-memory 연결용 shared-memory 이름 (Windows 전용) |
| --show-create-skip-secondary-engine | CREATE TABLE 문에서 SECONDARY ENGINE 절 제외 |
| --single-transaction | 서버에서 데이터를 덤프하기 전에 BEGIN SQL 문 실행 |
| --skip-add-drop-table | 각 CREATE TABLE 문 앞에 DROP TABLE 문을 추가하지 않음 |
| --skip-add-locks | 잠금을 추가하지 않음 |
| --skip-comments | 덤프 파일에 주석을 추가하지 않음 |
| --skip-compact | 더 간결한 출력을 생성하지 않음 |
| --skip-disable-keys | 키를 disable하지 않음 |
| --skip-extended-insert | extended-insert 비활성화 |
| --skip-generated-invisible-primary-key | 덤프 파일에 generated invisible primary key를 포함하지 않음 |
| --skip-opt | --opt로 설정된 옵션을 비활성화 |
| --skip-quick | 테이블의 행을 서버에서 한 번에 한 행씩 가져오지 않음 |
| --skip-quote-names | 식별자에 인용부호를 적용하지 않음 |
| --skip-set-charset | SET NAMES 문을 기록하지 않음 |
| --skip-triggers | 트리거를 덤프하지 않음 |
| --skip-tz-utc | tz-utc 비활성화 |
| --socket | 사용할 Unix 소켓 파일 또는 Windows named pipe |
| --source-data | binary log 파일 이름과 위치를 출력에 기록 |
| --ssl-ca | 신뢰할 수 있는 SSL Certificate Authority 목록이 포함된 파일 |
| --ssl-capath | 신뢰할 수 있는 SSL Certificate Authority 인증서 파일이 포함된 디렉터리 |
| --ssl-cert | X.509 인증서가 포함된 파일 |
| --ssl-cipher | 연결 암호화에 사용할 수 있는 cipher |
| --ssl-fips-mode | 클라이언트 측에서 FIPS 모드를 활성화할지 여부 |
| --ssl-key | X.509 키가 포함된 파일 |
| --ssl-mode | 서버와의 연결에 대한 보안 상태 지정 |
| --ssl-session-data | SSL 세션 데이터가 포함된 파일 |
| --ssl-session-data-continue-on-failed-reuse | 세션 재사용이 실패했을 때도 연결을 설정할지 여부 |
| --tab | 탭으로 구분된 데이터 파일 생성 |
| --tables | --databases 또는 -B 옵션을 무시 |
| --tls-ciphersuites | 암호화된 연결에 허용되는 TLSv1.3 ciphersuite |
| --tls-sni-servername | 클라이언트가 제공하는 서버 이름 |
| --tls-version | 암호화된 연결에 허용되는 TLS 프로토콜 |
| --triggers | 각 덤프된 테이블의 트리거를 덤프 |
| --tz-utc | 덤프 파일에 SET TIME_ZONE='+00:00' 추가 |
| --user | 서버에 연결할 때 사용할 MySQL 사용자 이름 |
| --users | 사용자 계정 정보를 CREATE USER 및 GRANT 문으로 덤프 |
| --verbose | verbose 모드 |
| --version | 버전 정보 표시 후 종료 |
| --where | 주어진 WHERE 조건으로 선택된 행만 덤프 |
| --xml | XML 출력 생성 |
| --zstd-compression-level | zstd 압축을 사용하는 서버 연결의 압축 레벨 |
| Option Name | Description |
|---|
mysqldump 명령은 정보를 추출하기 위해 MySQL 서버에 로그인합니다. 다음 옵션은 같은 머신 또는 원격 시스템의 MySQL 서버에 어떻게 연결할지를 지정합니다.
| Property | Value |
|---|---|
| Command-Line Format | --bind-address=ip_address |
다중 네트워크 인터페이스를 가진 컴퓨터에서, 이 옵션을 사용하여 MySQL 서버에 연결할 때 사용할 인터페이스를 선택합니다.
--compress, -C| Property | Value |
|---|---|
| Command-Line Format | `--compress[={OFF |
| Deprecated | Yes |
| Type | Boolean |
| Default Value | OFF |
가능한 경우 클라이언트와 서버 간에 전송되는 모든 정보를 압축합니다. 자세한 내용은 Section 6.2.8, “Connection Compression Control”을 참조하십시오.
이 옵션은 deprecated되었습니다. 향후 MySQL 버전에서 제거될 예정입니다. 자세한 내용은 Configuring Legacy Connection Compression을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --compression-algorithms=value |
| Type | Set |
| Default Value | uncompressed |
| Valid Values | zlib<br>zstd<br>uncompressed |
서버 연결에 허용되는 압축 알고리즘입니다.
사용 가능한 알고리즘은
protocol_compression_algorithms
시스템 변수와 동일합니다.
기본 값은 uncompressed입니다.
자세한 내용은 Section 6.2.8, “Connection Compression Control”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --default-auth=plugin |
| Type | String |
사용할 클라이언트 측 인증 플러그인에 대한 힌트를 제공합니다. Section 8.2.17, “Pluggable Authentication”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --enable-cleartext-plugin |
| Type | Boolean |
| Default Value | FALSE |
mysql_clear_password cleartext
인증 플러그인을 활성화합니다.
(자세한 내용은
Section 8.4.1.3, “Client-Side Cleartext Pluggable Authentication”을 참조하십시오.)
| Property | Value |
|---|---|
| Command-Line Format | --get-server-public-key |
| Type | Boolean |
RSA 키 쌍 기반 패스워드 교환에 필요한
public key를 서버에 요청합니다.
이 옵션은 caching_sha2_password
인증 플러그인으로 인증하는 클라이언트에 적용됩니다.
해당 플러그인의 경우, 서버는 요청이 있을 때만 public key를 보냅니다.
이 옵션은 그 플러그인으로 인증하지 않는 계정에 대해서는 무시됩니다.
또한 클라이언트가 보안 연결을 사용하여 서버에 연결하는 경우처럼
RSA 기반 패스워드 교환이 사용되지 않을 때에도 무시됩니다.
--server-public-key-path=file_name가
지정되고 유효한 public key 파일을 가리키면,
이는 --get-server-public-key보다 우선합니다.
caching_sha2_password 플러그인에 대한 정보는
Section 8.4.1.1, “Caching SHA-2 Pluggable Authentication”을 참조하십시오.
--host=host_name, -h host_name| Property | Value |
|---|---|
| Command-Line Format | --host |
지정된 호스트의 MySQL 서버에서 데이터를 덤프합니다.
기본 호스트는 localhost입니다.
| Property | Value |
|---|---|
| Command-Line Format | --login-path=name |
| Type | String |
.mylogin.cnf login path 파일에 있는
지정된 login path에서 옵션을 읽습니다.
“login path”란 어떤 MySQL 서버에 연결할지와
어떤 계정으로 인증할지를 지정하는 옵션 그룹입니다.
login path 파일을 생성하거나 수정하려면
mysql_config_editor 유틸리티를 사용하십시오.
자세한 내용은
Section 6.6.7, “mysql_config_editor — MySQL Configuration Utility”를 참조하십시오.
이 옵션과 기타 옵션-파일 관련 옵션에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --no-login-paths |
login path 파일에서 옵션을 읽는 것을 건너뜁니다.
관련 정보는 --login-path를 참조하십시오.
이 옵션과 기타 옵션-파일 관련 옵션에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”을 참조하십시오.
--password[=password], -p[password]| Property | Value |
|---|---|
| Command-Line Format | --password[=password] |
| Type | String |
서버에 연결하는 데 사용되는 MySQL 계정의 패스워드입니다.
패스워드 값은 선택 사항입니다.
지정하지 않으면 mysqldump가
사용자에게 입력을 요청합니다.
지정할 경우,
--password= 또는
-p와 그 뒤에 오는 패스워드 사이에는
공백이 없어야 합니다.
패스워드 옵션을 전혀 지정하지 않으면,
기본적으로 패스워드를 보내지 않습니다.
커맨드 라인에 패스워드를 지정하는 것은 보안상 안전하지 않을 수 있습니다. 커맨드 라인에 패스워드를 제공하는 대신 옵션 파일을 사용하십시오. 자세한 내용은 Section 8.1.2.1, “End-User Guidelines for Password Security”를 참조하십시오.
패스워드가 없으며
mysqldump가 패스워드 입력을 요구하지 않도록
명시적으로 지정하려면
--skip-password 옵션을 사용하십시오.
서버에 연결하는 데 사용되는 MySQL 계정의
다중 요소 인증 factor 1에 대한 패스워드입니다.
패스워드 값은 선택 사항입니다.
지정하지 않으면 mysqldump가
사용자에게 입력을 요청합니다.
지정할 경우,
--password1=과
그 뒤에 오는 패스워드 사이에는 공백이 없어야 합니다.
패스워드 옵션이 전혀 지정되지 않으면,
기본적으로 패스워드를 보내지 않습니다.
커맨드 라인에 패스워드를 지정하는 것은 보안상 안전하지 않을 수 있습니다. 커맨드 라인에 패스워드를 제공하는 대신 옵션 파일을 사용하십시오. 자세한 내용은 Section 8.1.2.1, “End-User Guidelines for Password Security”를 참조하십시오.
패스워드가 없으며
mysqldump가 패스워드 입력을 요구하지 않도록
명시적으로 지정하려면
--skip-password1 옵션을 사용하십시오.
--password1과
--password는 동의어이며,
--skip-password1과
--skip-password도 마찬가지입니다.
서버에 연결하는 데 사용되는 MySQL 계정의
다중 요소 인증 factor 2에 대한 패스워드입니다.
이 옵션의 의미는
--password1에 대한 의미와 유사합니다.
자세한 내용은 해당 옵션 설명을 참조하십시오.
서버에 연결하는 데 사용되는 MySQL 계정의
다중 요소 인증 factor 3에 대한 패스워드입니다.
이 옵션의 의미는
--password1에 대한 의미와 유사합니다.
자세한 내용은 해당 옵션 설명을 참조하십시오.
--pipe, -W| Property | Value |
|---|---|
| Command-Line Format | --pipe |
| Type | String |
Windows에서 named pipe를 사용하여 서버에 연결합니다.
이 옵션은 서버가 named-pipe 연결을 지원하기 위해
named_pipe 시스템 변수를
활성화하여 시작된 경우에만 적용됩니다.
또한 연결을 시도하는 사용자는
named_pipe_full_access_group
시스템 변수에 지정된 Windows 그룹의 구성원이어야 합니다.
| Property | Value |
|---|---|
| Command-Line Format | --plugin-authentication-kerberos-client-mode |
| Type | String |
| Default Value | SSPI |
| Valid Values | GSSAPI |
Windows에서 authentication_kerberos_client
인증 플러그인은 이 플러그인 옵션을 지원합니다.
런타임에 클라이언트 사용자가 설정할 수 있는 두 가지 값
SSPI와 GSSAPI를 제공합니다.
클라이언트 측 플러그인 옵션의 기본 값은 Security Support Provider Interface(SSPI)를 사용하며, 이는 Windows in-memory cache에서 credential을 가져올 수 있습니다. 또는 클라이언트 사용자는 Windows의 MIT Kerberos 라이브러리를 통한 Generic Security Service Application Program Interface(GSSAPI)를 지원하는 모드를 선택할 수 있습니다. GSSAPI는 kinit 명령을 사용해 이전에 생성된 캐시된 credential을 가져올 수 있습니다.
자세한 내용은 Commands for Windows Clients in GSSAPI Mode를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --plugin-dir=dir_name |
| Type | Directory name |
플러그인을 찾을 디렉터리입니다.
--default-auth 옵션을 사용해
인증 플러그인을 지정했지만
mysqldump가 이를 찾지 못하는 경우
이 옵션을 지정하십시오.
Section 8.2.17, “Pluggable Authentication”을 참조하십시오.
--port=port_num, -P port_num| Property | Value |
|---|---|
| Command-Line Format | --port=port_num |
| Type | Numeric |
| Default Value | 3306 |
TCP/IP 연결에 사용할 포트 번호입니다.
| Property | Value |
|---|---|
| Command-Line Format | --protocol=type |
| Type | String |
| Default Value | [see text] |
| Valid Values | TCP<br>SOCKET<br>PIPE<br>MEMORY |
서버에 연결할 때 사용할 전송 프로토콜입니다. 다른 연결 파라미터가 일반적으로 사용하려는 프로토콜과 다른 프로토콜을 사용하게 만드는 경우 이 옵션이 유용합니다. 허용되는 값에 대한 자세한 내용은 Section 6.2.7, “Connection Transport Protocols”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --server-public-key-path=file_name |
| Type | File name |
RSA 키 쌍 기반 패스워드 교환에 서버가 요구하는
public key의 클라이언트 측 복사본이 포함된
PEM 포맷 파일의 경로 이름입니다.
이 옵션은 sha256_password 또는
caching_sha2_password 인증 플러그인으로
인증하는 클라이언트에 적용됩니다.
해당 플러그인으로 인증하지 않는 계정에 대해서는 무시됩니다.
또한 클라이언트가 보안 연결을 사용하여 서버에 연결하는 경우처럼
RSA 기반 패스워드 교환이 사용되지 않을 때에도 무시됩니다.
--server-public-key-path=file_name가
지정되고 유효한 public key 파일을 가리키면,
이는 --get-server-public-key보다 우선합니다.
sha256_password의 경우,
이 옵션은 MySQL이 OpenSSL로 빌드된 경우에만 적용됩니다.
sha256_password 및 caching_sha2_password
플러그인에 대한 정보는
Section 8.4.1.2, “SHA-256 Pluggable Authentication”과
Section 8.4.1.1, “Caching SHA-2 Pluggable Authentication”을 참조하십시오.
--socket=path, -S path| Property | Value |
|---|---|
| Command-Line Format | `--socket={file_name |
| Type | String |
localhost에 대한 연결에서 사용할
Unix 소켓 파일 또는 Windows의 named pipe 이름입니다.
Windows에서 이 옵션은 서버가
named_pipe
시스템 변수를 활성화하여 named-pipe 연결을 지원하도록
시작된 경우에만 적용됩니다.
또한 연결을 시도하는 사용자는
named_pipe_full_access_group
시스템 변수에 지정된 Windows 그룹의 구성원이어야 합니다.
--ssl*--ssl로 시작하는 옵션은 서버에 대한 암호화된 연결을 사용할지 여부와
SSL 키 및 인증서의 위치를 지정합니다.
자세한 내용은
Command Options for Encrypted Connections를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | `--ssl-fips-mode={OFF |
| Deprecated | Yes |
| Type | Enumeration |
| Default Value | OFF |
| Valid Values | OFF<br>ON<br>STRICT |
클라이언트 측에서 FIPS 모드를 활성화할지 여부를 제어합니다.
--ssl-fips-mode 옵션은
암호화된 연결을 설정하는 데 사용되는
다른 --ssl-xxx 옵션과 달리,
허용할 암호화 작업을 제어합니다.
Section 8.8, “FIPS Support”를 참조하십시오.
--ssl-fips-mode에는
다음 값을 사용할 수 있습니다:
OFF: FIPS 모드를 비활성화합니다.
ON: FIPS 모드를 활성화합니다.
STRICT: “strict” FIPS 모드를 활성화합니다.
참고
OpenSSL FIPS Object Module을 사용할 수 없는 경우,
--ssl-fips-mode에 허용되는 값은
OFF뿐입니다.
이 경우 --ssl-fips-mode를
ON 또는 STRICT로 설정하면
클라이언트는 시작 시 경고를 출력하고
non-FIPS 모드로 동작합니다.
이 옵션은 deprecated되었습니다. 향후 MySQL 버전에서 제거될 예정입니다.
| Property | Value |
|---|---|
| Command-Line Format | --tls-ciphersuites=ciphersuite_list |
| Type | String |
TLSv1.3을 사용하는 암호화된 연결을 위한 허용되는 ciphersuite입니다. 값은 하나 이상의 ciphersuite 이름을 콜론으로 구분한 리스트입니다. 이 옵션에 지정할 수 있는 ciphersuite는 MySQL 컴파일 시 사용된 SSL 라이브러리에 따라 달라집니다. 자세한 내용은 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --tls-sni-servername=server_name |
| Type | String |
지정된 이름은
MYSQL_OPT_TLS_SNI_SERVERNAME 옵션을 사용하여
libmysqlclient C API 라이브러리로 전달됩니다
( mysql_options() 참조).
서버 이름은 대소문자를 구분하지 않습니다.
현재 세션에 대해 클라이언트가 지정한 서버 이름(있는 경우)을 확인하려면
Tls_sni_server_name
상태 변수를 확인하십시오.
Server Name Indication(SNI)는 TLS 프로토콜의 확장입니다 (이 옵션이 동작하려면 OpenSSL이 TLS 확장 기능을 사용해 컴파일되어야 합니다). MySQL의 SNI 구현은 클라이언트 측만 지원합니다.
| Property | Value |
|---|---|
| Command-Line Format | --tls-version=protocol_list |
| Type | String |
| Default Value | TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 (OpenSSL 1.1.1 이상)<br>TLSv1,TLSv1.1,TLSv1.2 (그 외) |
암호화된 연결에 허용되는 TLS 프로토콜입니다. 값은 하나 이상의 프로토콜 이름을 콤마로 구분한 리스트입니다. 이 옵션에 지정할 수 있는 프로토콜은 MySQL 컴파일 시 사용된 SSL 라이브러리에 따라 달라집니다. 자세한 내용은 Section 8.3.2, “Encrypted Connection TLS Protocols and Ciphers”를 참조하십시오.
--user=user_name, -u user_name| Property | Value |
|---|---|
| Command-Line Format | --user=user_name |
| Type | String |
서버에 연결할 때 사용할 MySQL 계정의 사용자 이름입니다.
Rewriter 플러그인을 사용하는 경우,
이 사용자에게
SKIP_QUERY_REWRITE 권한을 부여해야 합니다.
| Property | Value |
|---|---|
| Command-Line Format | --zstd-compression-level=# |
| Type | Integer |
zstd 압축 알고리즘을 사용하는
서버 연결에 대해 사용할 압축 레벨입니다.
허용되는 레벨은 1에서 22까지이며,
값이 클수록 압축 정도가 증가합니다.
기본 zstd 압축 레벨은 3입니다.
압축 레벨 설정은 zstd 압축을 사용하지 않는
연결에는 영향을 미치지 않습니다.
자세한 내용은 Section 6.2.8, “Connection Compression Control”을 참조하십시오.
이 옵션들은 어떤 옵션 파일을 읽을지를 제어하는 데 사용됩니다.
| Property | Value |
|---|---|
| Command-Line Format | --defaults-extra-file=file_name |
| Type | File name |
global 옵션 파일 뒤에 (Unix에서는 user 옵션 파일 앞에)
이 옵션 파일을 읽습니다.
파일이 존재하지 않거나 접근할 수 없는 경우 에러가 발생합니다.
_file_name_이 절대 경로 이름이 아니면,
현재 디렉터리를 기준으로 해석됩니다.
이 옵션과 기타 옵션-파일 관련 옵션에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --defaults-file=file_name |
| Type | File name |
지정된 옵션 파일만 사용합니다.
파일이 존재하지 않거나 접근할 수 없는 경우 에러가 발생합니다.
_file_name_이 절대 경로 이름이 아니면,
현재 디렉터리를 기준으로 해석됩니다.
예외: 클라이언트 프로그램은
--defaults-file을 사용하더라도
.mylogin.cnf를 읽습니다.
이 옵션과 기타 옵션-파일 관련 옵션에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --defaults-group-suffix=str |
| Type | String |
일반적인 옵션 그룹뿐 아니라,
일반적인 이름에 str suffix가 붙은 그룹도 읽습니다.
예를 들어, mysqldump는
일반적으로 [client] 및
[mysqldump] 그룹을 읽습니다.
이 옵션을
--defaults-group-suffix=_other로 지정하면,
mysqldump는
[client_other] 및
[mysqldump_other] 그룹도 읽습니다.
이 옵션과 기타 옵션-파일 관련 옵션에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --no-defaults |
어떠한 옵션 파일도 읽지 않습니다.
옵션 파일에서 읽은 알 수 없는 옵션 때문에 프로그램이 시작에 실패하는 경우,
--no-defaults를 사용하여
해당 파일이 읽히는 것을 방지할 수 있습니다.
예외적으로, .mylogin.cnf 파일은
존재할 경우 항상 읽습니다.
이렇게 하면
--no-defaults를 사용하는 경우에도
커맨드 라인보다 안전한 방식으로 패스워드를 지정할 수 있습니다.
.mylogin.cnf를 생성하려면
mysql_config_editor 유틸리티를 사용하십시오.
자세한 내용은
Section 6.6.7, “mysql_config_editor — MySQL Configuration Utility”를 참조하십시오.
이 옵션과 기타 옵션-파일 관련 옵션에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --print-defaults |
프로그램 이름과 옵션 파일에서 읽은 모든 옵션을 출력합니다.
이 옵션과 기타 옵션-파일 관련 옵션에 대한 추가 정보는 Section 6.2.2.3, “Command-Line Options that Affect Option-File Handling”을 참조하십시오.
mysqldump의 사용 시나리오에는 데이터베이스 테이블을 포함한 전체 새로운 MySQL 인스턴스를 구성하거나, 기존 인스턴스의 내부 데이터를 기존 데이터베이스와 테이블로 교체하는 것이 포함됩니다. 다음 옵션들은 덤프 파일 내에 다양한 DDL 문을 인코딩하여, 덤프를 복원할 때 무엇을 삭제하고 구성할지 지정할 수 있게 해 줍니다.
| Property | Value |
|---|---|
| Command-Line Format | --add-drop-database |
각 CREATE DATABASE 문 앞에
DROP DATABASE 문을 작성합니다.
이 옵션은 일반적으로
--all-databases 또는
--databases 옵션과 함께 사용합니다.
이들 옵션 중 하나가 지정되지 않으면
어떠한 CREATE DATABASE 문도
작성되지 않기 때문입니다.
참고
MySQL 9.5에서 mysql 스키마는
end user가 drop할 수 없는 시스템 스키마로 간주됩니다.
mysql을 포함하는 스키마 목록에 대해
--add-drop-database를
--all-databases 또는
--databases와 함께 사용하는 경우,
덤프 파일에는
``DROP DATABASE `mysql``` 문이 포함되며,
이 덤프 파일을 다시 로드하면 에러가 발생합니다.
따라서 --add-drop-database를 사용하려면,
덤프 대상 스키마 목록에 mysql을 포함하지 않는
스키마 목록과 함께
--databases를 사용하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --add-drop-table |
각 CREATE TABLE 문 앞에
DROP TABLE 문을 작성합니다.
| Property | Value |
|---|---|
| Command-Line Format | --add-drop-trigger |
각 CREATE TRIGGER 문 앞에
DROP TRIGGER 문을 작성합니다.
| Property | Value |
|---|---|
| Command-Line Format | --all-tablespaces |
NDB 테이블에서 사용되는
모든 테이블스페이스를 생성하는 데 필요한 SQL 문을
테이블 덤프에 추가합니다.
이 정보는 mysqldump 출력에
별도로 포함되지 않습니다.
현재 이 옵션은 NDB Cluster 테이블에만 관련이 있습니다.
--no-create-db, -n| Property | Value |
|---|---|
| Command-Line Format | --no-create-db |
--databases 또는
--all-databases 옵션이
지정된 경우 출력에 포함되는
CREATE DATABASE 문을 출력하지 않습니다.
--no-create-info, -t| Property | Value |
|---|---|
| Command-Line Format | --no-create-info |
덤프된 각 테이블을 생성하는
CREATE TABLE 문을 작성하지 않습니다.
참고
이 옵션은
mysqldump 출력에서
로그 파일 그룹이나 테이블스페이스를 생성하는 문을
제외하지 않습니다.
그러나 이 목적을 위해
--no-tablespaces
옵션을 사용할 수 있습니다.
--no-tablespaces, -y| Property | Value |
|---|---|
| Command-Line Format | --no-tablespaces |
이 옵션은
mysqldump 출력에서
모든 CREATE LOGFILE GROUP 및
CREATE TABLESPACE 문을 제거합니다.
| Property | Value |
|---|---|
| Command-Line Format | --replace |
다음 옵션들은 디버깅 정보를 출력하거나, 디버깅 정보를 덤프 파일에 인코딩하거나, 잠재적인 문제에도 불구하고 덤프 작업이 진행되도록 합니다.
| Property | Value |
|---|---|
| Command-Line Format | --allow-keywords |
키워드인 컬럼 이름 생성이 가능하도록 허용합니다. 이는 각 컬럼 이름 앞에 테이블 이름을 prefix함으로써 동작합니다.
--comments, -i| Property | Value |
|---|---|
| Command-Line Format | --comments |
프로그램 버전, 서버 버전, 호스트와 같은 추가 정보를
덤프 파일에 작성합니다.
이 옵션은 기본적으로 활성화되어 있습니다.
이 추가 정보를 출력하지 않으려면
--skip-comments를 사용하십시오.
--debug[=debug_options], -# [debug_options]| Property | Value |
|---|---|
| Command-Line Format | --debug[=debug_options] |
| Type | String |
| Default Value | d:t:o,/tmp/mysqldump.trace |
디버깅 로그를 작성합니다.
전형적인 debug_options 문자열은
d:t:o,file_name입니다.
기본 값은
d:t:o,/tmp/mysqldump.trace입니다.
이 옵션은 MySQL이
WITH_DEBUG를
사용해 빌드된 경우에만 사용할 수 있습니다.
Oracle에서 제공하는 MySQL 릴리스 바이너리는
이 옵션을 사용해 빌드되지 않습니다.
| Property | Value |
|---|---|
| Command-Line Format | --debug-check |
| Type | Boolean |
| Default Value | FALSE |
프로그램 종료 시 몇 가지 디버깅 정보를 출력합니다.
이 옵션은 MySQL이
WITH_DEBUG를
사용해 빌드된 경우에만 사용할 수 있습니다.
Oracle에서 제공하는 MySQL 릴리스 바이너리는
이 옵션을 사용해 빌드되지 않습니다.
| Property | Value |
|---|---|
| Command-Line Format | --debug-info |
| Type | Boolean |
| Default Value | FALSE |
프로그램 종료 시 디버깅 정보와 메모리 및 CPU 사용 통계를 출력합니다.
이 옵션은 MySQL이
WITH_DEBUG를
사용해 빌드된 경우에만 사용할 수 있습니다.
Oracle에서 제공하는 MySQL 릴리스 바이너리는
이 옵션을 사용해 빌드되지 않습니다.
| Property | Value |
|---|---|
| Command-Line Format | --dump-date |
| Type | Boolean |
| Default Value | TRUE |
--comments 옵션이 주어지면,
mysqldump는
덤프 끝에 다음 형식의 주석을 생성합니다:
1 -- Dump completed on DATE
그러나 이 날짜 때문에 데이터가 동일하더라도,
다른 시점에 수행된 덤프 파일은 서로 다른 것으로 보이게 됩니다.
--dump-date와
--skip-dump-date는
주석에 날짜를 추가할지 여부를 제어합니다.
기본 값은 --dump-date
(날짜를 주석에 포함)입니다.
--skip-dump-date는
날짜 출력을 억제합니다.
--force, -f| Property | Value |
|---|---|
| Command-Line Format | --force |
모든 에러를 무시합니다. 테이블 덤프 중 SQL 에러가 발생하더라도 계속 진행합니다.
이 옵션의 한 사용 예는,
정의가 drop된 테이블을 참조함으로써
invalid 상태가 된 뷰를 만났을 때도
mysqldump가 실행을 계속하도록 하는 것입니다.
--force 없이 실행하면,
mysqldump는 에러 메시지와 함께 종료합니다.
--force를 사용하면,
mysqldump는 에러 메시지를 출력하면서도
덤프 출력에 뷰 정의를 포함한 SQL 주석을 작성하고
실행을 계속합니다.
특정 에러를 무시하는
--ignore-error 옵션도 함께 지정된 경우,
--force가 우선합니다.
| Property | Value |
|---|---|
| Command-Line Format | --log-error=file_name |
| Type | File name |
경고와 에러를 지정된 파일에 append하여 로깅합니다. 기본 값은 로깅을 하지 않는 것입니다.
| Property | Value |
|---|---|
| Command-Line Format | --skip-comments |
--comments 옵션 설명을 참조하십시오.
--verbose, -v| Property | Value |
|---|---|
| Command-Line Format | --verbose |
verbose 모드입니다. 프로그램이 수행하는 작업에 대한 더 많은 정보를 출력합니다.
다음 옵션들은 mysqldump 명령 자체에 대한 정보를 표시합니다.
--help, -?| Property | Value |
|---|---|
| Command-Line Format | --help |
도움말 메시지를 표시한 후 종료합니다.
--version, -V| Property | Value |
|---|---|
| Command-Line Format | --version |
버전 정보를 표시한 후 종료합니다.
다음 옵션들은 mysqldump 명령이 national language 설정을 사용하여 문자 데이터를 어떻게 표현할지를 변경합니다.
| Property | Value |
|---|---|
| Command-Line Format | --character-sets-dir=dir_name |
| Type | Directory name |
문자 집합이 설치된 디렉터리입니다. Section 12.15, “Character Set Configuration”을 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --default-character-set=charset_name |
| Type | String |
| Default Value | utf8 |
_charset_name_을 기본 문자 집합으로 사용합니다.
Section 12.15, “Character Set Configuration”을 참조하십시오.
문자 집합을 지정하지 않으면,
mysqldump는
utf8mb4를 사용합니다.
--no-set-names, -N| Property | Value |
|---|---|
| Command-Line Format | --no-set-names |
| Deprecated | Yes |
--set-charset 설정을 해제합니다.
--skip-set-charset을 지정하는 것과 동일합니다.
| Property | Value |
|---|---|
| Command-Line Format | --set-charset |
| Disabled by | skip-set-charset |
출력에
SET NAMES default_character_set를 작성합니다.
이 옵션은 기본적으로 활성화되어 있습니다.
SET NAMES 문을
출력하지 않으려면
--skip-set-charset을 사용하십시오.
mysqldump 명령은 replication 구성을 사용할 때, replica 서버에서 빈 인스턴스 또는 데이터를 포함한 인스턴스를 생성하는 데 자주 사용됩니다. 다음 옵션들은 replication 소스 서버와 replica에서 데이터를 덤프하고 복원하는 데 적용됩니다.
| Property | Value |
|---|---|
| Command-Line Format | --apply-replica-statements |
| Type | Boolean |
| Default Value | FALSE |
--dump-replica 옵션으로 생성된 replica 덤프의 경우,
이 옵션은 binary log 좌표가 포함된 문 앞에
STOP REPLICA 문을 추가하고,
출력 끝에
START REPLICA 문을 추가합니다.
| Property | Value |
|---|---|
| Command-Line Format | --apply-slave-statements |
| Deprecated | Yes |
| Type | Boolean |
| Default Value | FALSE |
이 옵션은
--apply-replica-statements에 대한
deprecated alias입니다.
| Property | Value |
|---|---|
| Command-Line Format | --delete-source-logs |
replication 소스 서버에서, 덤프 작업 이후
PURGE BINARY LOGS 문을 서버에 보내
binary log를 삭제합니다.
이 옵션은
RELOAD 권한과 함께,
해당 문을 실행하는 데 충분한 권한을 필요로 합니다.
이 옵션은 자동으로
--source-data를 활성화합니다.
| Property | Value |
|---|---|
| Command-Line Format | --delete-master-logs |
| Deprecated | Yes |
이 옵션은
--delete-source-logs에 대한
deprecated alias입니다.
| Property | Value |
|---|---|
| Command-Line Format | --dump-replica[=value] |
| Type | Numeric |
| Default Value | 1 |
| Valid Values | 1<br>2 |
이 옵션은
--source-data와 유사하지만,
덤프된 서버와 동일한 소스를 가진 다른 서버를 replica로 구성하는 데
사용할 수 있는 덤프 파일을 생성하기 위해
replica 서버를 덤프할 때 사용합니다.
이 옵션은 덤프 출력에
덤프된 replica의 소스에 대한 binary log 좌표(파일 이름과 위치)를
나타내는 CHANGE REPLICATION SOURCE TO 문을 포함시킵니다.
이 CHANGE REPLICATION SOURCE TO 문은
SHOW REPLICA STATUS 출력에서
Relay_Master_Log_File과
Exec_Master_Log_Pos 값을 읽어 각각
SOURCE_LOG_FILE과
SOURCE_LOG_POS에 사용합니다.
이는 replica가 replication을 시작하는 replication 소스 서버 좌표입니다.
참고
실행된 relay log의 트랜잭션 시퀀스 불일치는 잘못된 위치를 사용하게 만들 수 있습니다. 자세한 내용은 Section 19.5.1.35, “Replication and Transaction Inconsistencies”를 참조하십시오.
--dump-replica는
--source-data 옵션이
덤프된 서버의 좌표를 사용하는 것과는 달리,
소스의 좌표를 사용하도록 합니다.
또한 이 옵션을 지정하면
--source-data를
무시하도록 override합니다.
주의
--dump-replica는 덤프가 적용될 서버에서
gtid_mode=ON 및
SOURCE_AUTO_POSITION=1을 사용하는 경우
사용해서는 안 됩니다.
옵션 값은
--source-data의
값과 동일한 방식으로 처리됩니다.
값을 지정하지 않거나 1로 설정하면
CHANGE REPLICATION SOURCE TO 문이
덤프에 작성됩니다.
값을 2로 설정하면, 이 문이 SQL 주석으로 감싸져 출력되며,
이는 덤프 재로드 시 효과가 없습니다.
옵션 값의 유무와 관계없이, 다른 옵션을 활성화/비활성화하는 효과와
잠금을 처리하는 방식은 --source-data와 동일합니다.
--dump-replica는 덤프 전에
replication SQL 스레드를 중지하고, 덤프 후 다시 시작하도록
mysqldump에 지시합니다.
--dump-replica는 서버에 정보를 얻기 위해
SHOW REPLICA STATUS 문을 보내므로,
해당 문을 실행하는 데 충분한 권한을 필요로 합니다.
--apply-replica-statements와
--include-source-host-port
옵션은 --dump-replica와 함께 사용할 수 있습니다.
| Property | Value |
|---|---|
| Command-Line Format | --dump-slave[=value] |
| Deprecated | Yes |
| Type | Numeric |
| Default Value | 1 |
| Valid Values | 1<br>2 |
이 옵션은
--dump-replica에 대한
deprecated alias입니다.
| Property | Value |
|---|---|
| Command-Line Format | --include-source-host-port |
| Type | Boolean |
| Default Value | FALSE |
--dump-replica 옵션으로 생성된
replica 덤프의 CHANGE REPLICATION SOURCE TO 문에,
replica 소스의 호스트 이름 및 TCP/IP 포트 번호에 대한
SOURCE_HOST 및 SOURCE_PORT 옵션을 추가합니다.
| Property | Value |
|---|---|
| Command-Line Format | --include-master-host-port |
| Deprecated | Yes |
| Type | Boolean |
| Default Value | FALSE |
이 옵션은
--include-source-host-port에 대한
deprecated alias입니다.
| Property | Value |
|---|---|
| Command-Line Format | --master-data[=value] |
| Deprecated | Yes |
| Type | Numeric |
| Default Value | 1 |
| Valid Values | 1<br>2 |
이 옵션은
--source-data에 대한
deprecated alias입니다.
| Property | Value |
|---|---|
| Command-Line Format | --output-as-version=value |
| Type | Enumeration |
| Default Value | SERVER |
| Valid Values | BEFORE_8_0_23<br>BEFORE_8_2_0 |
replica 및 event와 관련된 문에 대해 사용할 용어 수준을 결정하며, 새로운 terminology를 인식하지 못하는 이전 MySQL 버전과 호환되는 덤프를 생성할 수 있게 합니다. 이 옵션은 아래에 설명된 값 중 하나를 가질 수 있습니다:
SERVER: 서버 버전을 읽고
해당 버전과 호환되는 최신 버전의 문을 사용합니다.
기본 값입니다.
BEFORE_8_0_23: “replica”와 “source” 대신
“slave”와 “master” 같은 deprecated 용어를 사용하는
replication SQL 문을 출력에 기록합니다.
이는 MySQL 8.0.23 이전 버전과 같습니다.
이 옵션은 또한
SHOW CREATE EVENT 출력에 대해
BEFORE_8_2_0의 효과를 함께 적용하여,
DISABLE ON REPLICA 대신
DISABLE ON SLAVE를 표시하게 합니다.
BEFORE_8_2_0: 이 옵션은
MySQL 8.2.0 이전 서버에서 event가 생성되었을 때와 같이
SHOW CREATE EVENT가
DISABLE ON REPLICA 대신
DISABLE ON SLAVE를 표시하도록 합니다.
이 옵션은
--events,
--dump-replica,
--source-data,
--apply-replica-statements,
--include-source-host-port
출력에 영향을 미칩니다.
| Property | Value |
|---|---|
| Command-Line Format | --source-data[=value] |
| Type | Numeric |
| Default Value | 1 |
| Valid Values | 1<br>2 |
replication 소스 서버를 덤프하여,
해당 서버의 replica로 다른 서버를 구성하는 데 사용할 수 있는
덤프 파일을 생성하는 데 사용됩니다.
이 옵션은 덤프 출력에
덤프된 서버의 binary log 좌표(파일 이름과 위치)를 나타내는
CHANGE REPLICATION SOURCE TO 문을 포함시킵니다.
이는 replica가 덤프 파일을 로드한 이후 replication을 시작해야 하는
replication 소스 서버 좌표입니다.
옵션 값을 2로 설정하면,
CHANGE REPLICATION SOURCE TO 문이
SQL 주석으로 작성되어,
덤프 파일을 다시 로드할 때 아무런 효과를 가지지 않고
정보 제공용으로만 사용됩니다.
옵션 값을 1로 설정하면,
이 문은 주석으로 작성되지 않고
덤프 파일을 다시 로드할 때 효과를 발휘합니다.
옵션 값을 지정하지 않으면 기본 값은 1입니다.
--source-data는 정보를 얻기 위해
서버에 SHOW BINARY LOG STATUS 문을 보내므로,
해당 문을 실행하는 데 충분한 권한을 필요로 합니다.
이 옵션은 또한
RELOAD 권한을 필요로 하며,
binary log가 활성화되어 있어야 합니다.
--source-data는 자동으로
--lock-tables를 비활성화합니다.
또한
--single-transaction이 지정되지 않은 경우
--lock-all-tables를 활성화합니다.
--single-transaction이
함께 지정된 경우, 덤프 시작 시점에 짧은 시간 동안만
global read lock이 획득됩니다
(자세한 내용은
--single-transaction 설명을 참조하십시오).
모든 경우에, 로그에 대한 모든 작업은 덤프 시점에 정확히 수행됩니다.
또 다른 방법으로, 소스의 기존 replica를 덤프하여
다른 서버를 replica로 구성할 수도 있으며,
이를 위해 --dump-replica 옵션을 사용할 수 있습니다.
이 옵션은 --source-data를 override하여 무시되게 합니다.
| Property | Value |
|---|---|
| Command-Line Format | --set-gtid-purged=value |
| Type | Enumeration |
| Default Value | AUTO |
| Valid Values | OFF<br>ON<br>AUTO |
이 옵션은 GTID 기반 replication
(gtid_mode=ON)을 사용하는 서버를 위한 것입니다.
덤프 출력에
SET @@GLOBAL.gtid_purged 문을 포함할지 여부를 제어하며,
덤프 파일을 다시 로드하는 서버에서
gtid_purged의 값을 업데이트하여,
소스 서버의
gtid_executed
시스템 변수에 있는 GTID set을 추가합니다.
gtid_purged는
서버에서 적용되었지만 서버의 어떠한 binary log 파일에도 존재하지 않는
트랜잭션의 GTID를 저장합니다.
따라서 mysqldump는
소스 서버에서 실행된 트랜잭션의 GTID를 추가하여,
타겟 서버가 이 트랜잭션들을
binary log에 보관하지 않고도 적용된 것으로 기록하게 합니다.
--set-gtid-purged는 또한
덤프 파일이 다시 로드되는 동안 binary logging을 비활성화하는
SET @@SESSION.sql_log_bin=0 문의 포함 여부도 제어합니다.
이 문은 덤프 파일의 트랜잭션이 실행될 때
새로운 GTID가 생성되어 할당되는 것을 방지하여,
트랜잭션에 원래의 GTID가 사용되도록 합니다.
--set-gtid-purged 옵션을 설정하지 않으면,
기본적으로 GTID가 활성화된 백업 대상 서버에서
global gtid_executed 값이
비어 있지 않은 경우에만,
SET @@GLOBAL.gtid_purged 문이
덤프 출력에 포함됩니다.
이 경우 GTID가 활성화되어 있으면
SET @@SESSION.sql_log_bin=0 문도 포함됩니다.
gtid_purged 값을
특정 GTID set으로 교체하거나,
문에 plus sign(+)을 추가하여
이미 gtid_purged에 저장된 GTID set에
지정된 GTID set을 append할 수 있습니다.
mysqldump가 기록하는
SET @@GLOBAL.gtid_purged 문은
덤프 파일의 GTID set을 기존 gtid_purged 값에 추가하도록
버전별 주석 내에 plus sign(+)을 포함합니다.
주의할 점은,
mysqldump가
SET @@GLOBAL.gtid_purged 문에 포함하는 값은,
데이터베이스의 일부가 덤프에서 제외되었거나
덤프에 포함되지 않은 다른 데이터베이스를 변경한 트랜잭션을 포함해,
서버의 gtid_executed set에 있는
모든 트랜잭션의 GTID를 포함한다는 점입니다.
이는 덤프 파일이 재생된 서버에서
gtid_purged 값이 업데이트된 이후,
타겟 서버의 어떠한 데이터와도 관련이 없는 GTID가 존재할 수 있음을 의미합니다.
추가 덤프 파일을 타겟 서버에서 재생하지 않는다면,
이러한 불필요한 GTID는 서버의 향후 동작에 문제를 일으키지 않지만,
replication topology의 서로 다른 서버에서
GTID set을 비교하거나 조정하기 어렵게 만듭니다.
동일한 GTID를 포함하는 또 다른 덤프 파일(예: 동일한 origin 서버에서
다른 partial 덤프)을 타겟 서버에서 재생하는 경우,
두 번째 덤프 파일에 포함된
SET @@GLOBAL.gtid_purged 문은 실패합니다.
이 경우 덤프 파일을 재생하기 전에 문을 수동으로 제거하거나,
해당 문 없이 덤프 파일을 생성해야 합니다.
SET @@GLOBAL.gtid_purged 문이
타겟 서버에서 원하는 결과를 내지 못한다면,
이 문을 출력에서 제외하거나,
자동으로 실행되지 않도록 주석 처리하여 포함할 수 있습니다.
또한 덤프 파일에서 이 문을 수동으로 편집하여
원하는 결과를 얻도록 만들 수도 있습니다.
--set-gtid-purged 옵션의 가능한 값은 다음과 같습니다:
AUTO
기본 값입니다.
백업 대상 서버에서 GTID가 활성화되어 있고
gtid_executed가 비어 있지 않으면,
gtid_executed의 GTID set을 포함하는
SET @@GLOBAL.gtid_purged가 출력에 추가됩니다.
GTID가 활성화된 경우,
SET @@SESSION.sql_log_bin=0도 출력에 추가됩니다.
서버에서 GTID가 활성화되어 있지 않으면,
이러한 문은 출력에 추가되지 않습니다.
OFF
SET @@GLOBAL.gtid_purged는
출력에 추가되지 않으며,
SET @@SESSION.sql_log_bin=0도 추가되지 않습니다.
GTID를 사용하지 않는 서버에서는
이 옵션 또는 AUTO를 사용하십시오.
GTID를 사용하는 서버에서 이 옵션을 사용하려는 경우,
필요한 GTID set이 타겟 서버의
gtid_purged에 이미 존재하며
변경해서는 안 된다는 것을 확신하거나,
누락된 GTID를 수동으로 식별하고 추가할 계획이 있을 때만 사용해야 합니다.
ON
백업 대상 서버에서 GTID가 활성화되어 있고
gtid_executed가
비어 있지 않으면,
SET @@GLOBAL.gtid_purged가 출력에 추가되며,
SET @@SESSION.sql_log_bin=0도 출력에 추가됩니다.
이 옵션을 설정했는데 서버에서 GTID가 활성화되어 있지 않으면
에러가 발생합니다.
GTID를 사용하는 서버에서는,
타겟 서버에
gtid_executed에 있는 GTID가
필요 없다고 확신하지 않는 한
이 옵션 또는 AUTO를 사용해야 합니다.
COMMENTED
백업 대상 서버에서 GTID가 활성화되어 있고
gtid_executed가
비어 있지 않으면,
SET @@GLOBAL.gtid_purged가 출력에 추가되지만
주석 처리됩니다.
이는 gtid_executed의 값이
출력에 포함되지만,
덤프 파일을 다시 로드할 때 자동으로 적용되지는 않음을 의미합니다.
SET @@SESSION.sql_log_bin=0는 출력에 추가되며,
주석 처리되지 않습니다.
COMMENTED를 사용하면,
gtid_executed set을
수동 또는 자동화 방식으로 사용할 수 있습니다.
예를 들어, 이미 다른 활성 데이터베이스를 가진
다른 서버로 데이터를 migration하는 경우,
이 방법을 선호할 수 있습니다.
다음 옵션들은 전체 덤프 파일 또는 덤프 파일 내 특정 유형의 데이터를 어떻게 표현할지 지정합니다. 또한 덤프 파일에 특정 optional 정보를 기록할지 여부도 제어합니다.
| Property | Value |
|---|---|
| Command-Line Format | --compact |
보다 간결한 출력을 생성합니다.
이 옵션은
--skip-add-drop-table,
--skip-add-locks,
--skip-comments,
--skip-disable-keys,
--skip-set-charset
옵션을 활성화합니다.
| Property | Value |
|---|---|
| Command-Line Format | --compatible=name[,name,...] |
| Type | String |
| Default Value | '' |
| Valid Values | ansi |
다른 데이터베이스 시스템이나 오래된 MySQL 서버와
더 호환되는 출력을 생성합니다.
이 옵션에 허용되는 유일한 값은 ansi이며,
서버 SQL 모드를 설정하기 위한 동일한 이름의 옵션과
동일한 의미를 가집니다.
Section 7.1.11, “Server SQL Modes”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --complete-insert |
컬럼 이름을 포함하는 완전한
INSERT 문을 사용합니다.
| Property | Value |
|---|---|
| Command-Line Format | --create-options |
모든 MySQL 고유의 테이블 옵션을
CREATE TABLE 문에 포함합니다.
--fields-terminated-by=...,
--fields-enclosed-by=...,
--fields-optionally-enclosed-by=...,
--fields-escaped-by=...| Property | Value |
|---|---|
| Command-Line Format | --fields-terminated-by=string |
| Type | String |
| Property | Value |
|---|---|
| Command-Line Format | --fields-enclosed-by=string |
| Type | String |
| Property | Value |
|---|---|
| Command-Line Format | --fields-optionally-enclosed-by=string |
| Type | String |
| Property | Value |
|---|---|
| Command-Line Format | --fields-escaped-by |
| Type | String |
이 옵션들은
--tab 옵션과 함께 사용되며,
LOAD DATA의 해당 FIELDS 절과
동일한 의미를 가집니다.
Section 15.2.9, “LOAD DATA Statement”를 참조하십시오.
| Property | Value |
|---|---|
| Command-Line Format | --hex-blob |
바이너리 컬럼을 16진수 표기법(예: 'abc'를
0x616263으로)으로 덤프합니다.
해당 데이터 타입은
BINARY,
VARBINARY,
BLOB 타입,
BIT,
모든 spatial 데이터 타입,
그리고 binary 문자 집합을 사용할 때의
기타 non-binary 데이터 타입입니다
(binary character set 참조).
--hex-blob 옵션은
--tab이 사용되는 경우 무시됩니다.
| Property | Value |
|---|---|
| Command-Line Format | --lines-terminated-by=string |
| Type | String |
이 옵션은
--tab 옵션과 함께 사용되며,
LOAD DATA의 해당 LINES 절과
동일한 의미를 가집니다.
Section 15.2.9, “LOAD DATA Statement”를 참조하십시오.
--quote-names, -Q| Property | Value |
|---|---|
| Command-Line Format | --quote-names |
| Disabled by | skip-quote-names |
데이터베이스, 테이블, 컬럼 이름과 같은 식별자를
[`ANSI_QUOTES`](https://dev.mysql.com/doc/refman/9.5/en/sql-mode.html#sqlmode_ansi_quotes) SQL 모드가
활성화된 경우, 식별자는 `"` 문자로 quoted됩니다.
이 옵션은 기본적으로 활성화되어 있습니다.
`--skip-quote-names`로 비활성화할 수 있으나,
이 옵션은
[`--compatible`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_compatible)처럼
[`--quote-names`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_quote-names)를 활성화할 수 있는 옵션 뒤에 지정해야 합니다.
- [`--result-file=file_name`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_result-file), `-r file_name`
| Property | Value |
| --- | --- |
| Command-Line Format | `--result-file=file_name` |
| Type | File name |
출력을 지정된 파일로 리디렉트합니다.
덤프를 생성하는 동안 에러가 발생하더라도,
결과 파일은 생성되며 이전 내용은 덮어씁니다.
Windows에서는 newline `\n` 문자가
`\r\n` carriage return/newline 시퀀스로 변환되는 것을 방지하기 위해
이 옵션을 사용해야 합니다.
- [`--show-create-skip-secondary-engine=value`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_show-create-skip-secondary-engine)
| Property | Value |
| --- | --- |
| Command-Line Format | `--show-create-skip-secondary-engine` |
[`CREATE TABLE`](https://dev.mysql.com/doc/refman/9.5/en/create-table.html "15.1.24 CREATE TABLE Statement") 문에서
`SECONDARY ENGINE` 절을 제외합니다.
덤프 작업 동안
[`show_create_table_skip_secondary_engine`](https://dev.mysql.com/doc/heatwave/en/heatwave-system-variables.html#sysvar_show_create_table_skip_secondary_engine)
시스템 변수를 활성화함으로써 이 동작을 수행합니다.
또는 덤프를 사용하기 전에
[`show_create_table_skip_secondary_engine`](https://dev.mysql.com/doc/heatwave/en/heatwave-system-variables.html#sysvar_show_create_table_skip_secondary_engine)
시스템 변수를 enable 할 수도 있습니다.
- [`--tab=dir_name`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_tab), `-T dir_name`
| Property | Value |
| --- | --- |
| Command-Line Format | `--tab=dir_name` |
| Type | Directory name |
탭으로 구분된 text-format 데이터 파일을 생성합니다.
덤프된 각 테이블에 대해,
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
테이블을 생성하는
[`CREATE TABLE`](https://dev.mysql.com/doc/refman/9.5/en/create-table.html "15.1.24 CREATE TABLE Statement") 문을 포함하는
`tbl_name.sql` 파일을 생성하고,
서버는 테이블 데이터를 포함하는
`tbl_name.txt` 파일을 작성합니다.
옵션 값은 이 파일들을 작성할 디렉터리입니다.
**참고**
이 옵션은
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")가
[**mysqld**](https://dev.mysql.com/doc/refman/9.5/en/mysqld.html "6.3.1 mysqld — The MySQL Server") 서버와 같은 머신에서
실행될 때에만 사용해야 합니다.
서버는 지정된 디렉터리에 `*.txt` 파일을 생성하므로,
해당 디렉터리는 서버가 쓸 수 있어야 하며,
사용 중인 MySQL 계정에는
[`FILE`](https://dev.mysql.com/doc/refman/9.5/en/privileges-provided.html#priv_file) 권한이 있어야 합니다.
또한 [**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
같은 디렉터리에 `*.sql` 파일을 생성하므로,
해당 디렉터리는 시스템 로그인 계정도 쓸 수 있어야 합니다.
기본적으로 `.txt` 데이터 파일은
컬럼 값 사이에 탭 문자를 사용하고,
각 라인 끝에 newline을 사용하여 포맷됩니다.
포맷은
`--fields-xxx` 및
[`--lines-terminated-by`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_lines-terminated-by)
옵션을 사용해 명시적으로 지정할 수 있습니다.
컬럼 값은
[`--default-character-set`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_default-character-set) 옵션에
지정된 문자 집합으로 변환됩니다.
- [`--tz-utc`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_tz-utc)
| Property | Value |
| --- | --- |
| Command-Line Format | `--tz-utc` |
| Disabled by | `skip-tz-utc` |
이 옵션은 서로 다른 시간대에 위치한 서버들 사이에서
[`TIMESTAMP`](https://dev.mysql.com/doc/refman/9.5/en/datetime.html "13.2.2 The DATE, DATETIME, and TIMESTAMP Types") 컬럼을 덤프하고 다시 로드할 수 있게 합니다.
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
connection 시간대를 UTC로 설정하고
덤프 파일에 `SET TIME_ZONE='+00:00'`를 추가합니다.
이 옵션이 없으면,
[`TIMESTAMP`](https://dev.mysql.com/doc/refman/9.5/en/datetime.html "13.2.2 The DATE, DATETIME, and TIMESTAMP Types") 컬럼은
소스 서버와 대상 서버의 지역 시간대에서
덤프 및 재로드되며,
서로 다른 시간대에 있는 서버 사이에서 값을 변경시킬 수 있습니다.
`--tz-utc`는 또한 daylight saving time으로 인한 변경을 방지합니다.
`--tz-utc`는 기본적으로 활성화되어 있습니다.
이를 비활성화하려면
`--skip-tz-utc`를 사용하십시오.
- [`--xml`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_xml), `-X`
| Property | Value |
| --- | --- |
| Command-Line Format | `--xml` |
덤프 출력을 well-formed XML로 작성합니다.
**`NULL`,**
**`'NULL'`, 빈 값**:
_`column_name`_이라는 이름의 컬럼에 대해,
`NULL` 값, 빈 문자열, 문자열 값 `'NULL'`은
다음과 같이 출력에서 서로 구분됩니다.
| Value: | XML Representation: |
| --- | --- |
| `NULL` (_unknown value_) | `<field<br> name="column_name"<br> xsi:nil="true" />` |
| `''` (_empty string_) | `<field<br> name="column_name"></field>` |
| `'NULL'` (_string value_) | `<field<br> name="column_name">NULL</field>` |
[`--xml`](https://dev.mysql.com/doc/refman/9.5/en/mysql-command-options.html#option_mysql_xml) 옵션을 사용해 실행할 때,
[**mysql**](https://dev.mysql.com/doc/refman/9.5/en/mysql.html "6.5.1 mysql — The MySQL Command-Line Client") 클라이언트가 생성하는
출력도 위 규칙을 따릅니다
([Section 6.5.1.1, “mysql Client Options”](https://dev.mysql.com/doc/refman/9.5/en/mysql-command-options.html "6.5.1.1 mysql Client Options") 참조).
**참고**
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")`--xml`이 생성하는 XML 출력 포맷은
[`--users`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_users) 옵션과
호환되지 않습니다.
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")의 XML 출력에는
다음과 같이 XML namespace가 포함됩니다:
```terminal
$> mysqldump --xml -u root world City
<?xml version="1.0"?>
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="world">
<table_structure name="City">
<field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" />
<field Field="Name" Type="char(35)" Null="NO" Key="" Default="" Extra="" />
<field Field="CountryCode" Type="char(3)" Null="NO" Key="" Default="" Extra="" />
<field Field="District" Type="char(20)" Null="NO" Key="" Default="" Extra="" />
<field Field="Population" Type="int(11)" Null="NO" Key="" Default="0" Extra="" />
<key Table="City" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID"
Collation="A" Cardinality="4079" Null="" Index_type="BTREE" Comment="" />
<options Name="City" Engine="MyISAM" Version="10" Row_format="Fixed" Rows="4079"
Avg_row_length="67" Data_length="273293" Max_data_length="18858823439613951"
Index_length="43008" Data_free="0" Auto_increment="4080"
Create_time="2007-03-31 01:47:01" Update_time="2007-03-31 01:47:02"
Collation="latin1_swedish_ci" Create_options="" Comment="" />
</table_structure>
<table_data name="City">
<row>
<field name="ID">1</field>
<field name="Name">Kabul</field>
<field name="CountryCode">AFG</field>
<field name="District">Kabol</field>
<field name="Population">1780000</field>
</row>
...
<row>
<field name="ID">4079</field>
<field name="Name">Rafah</field>
<field name="CountryCode">PSE</field>
<field name="District">Rafah</field>
<field name="Population">92020</field>
</row>
</table_data>
</database>
</mysqldump>
```
#### Filtering Options
다음 옵션들은 category(예: 트리거나 이벤트)별,
이름별(예: 덤프할 데이터베이스와 테이블 선택),
또는 `WHERE` 절을 사용하는 테이블 데이터 행 필터로,
덤프 파일에 어떤 스키마 객체를 기록할지 제어합니다.
- [`--add-drop-user`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_add-drop-user)
| Property | Value |
| --- | --- |
| Command-Line Format | `--add-drop-user` |
[`--users`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_users)와 함께 사용할 때,
모든 [`CREATE USER`](https://dev.mysql.com/doc/refman/9.5/en/create-user.html "15.7.1.3 CREATE USER Statement") 문 앞에
[`DROP USER`](https://dev.mysql.com/doc/refman/9.5/en/drop-user.html "15.7.1.5 DROP USER Statement") 문을 포함합니다.
`--users` 옵션을 사용하지 않으면 효과가 없습니다.
- [`--all-databases`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_all-databases), `-A`
| Property | Value |
| --- | --- |
| Command-Line Format | `--all-databases` |
모든 데이터베이스의 모든 테이블을 덤프합니다.
이는
[`--databases`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_databases)를 사용하고
커맨드 라인에 모든 데이터베이스를 나열하는 것과 동일합니다.
**참고**
[`--add-drop-database`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_add-drop-database)와
[`--all-databases`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_all-databases) 간의
호환성 문제에 대한 정보는
[`--add-drop-database`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_add-drop-database)
설명을 참조하십시오.
MySQL 9.5 이전에는
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")에서
stored routine과 이벤트를 포함시키기 위해
[`--all-databases`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_all-databases) 옵션과 함께
[`--routines`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_routines) 및
[`--events`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_events) 옵션을
필수로 사용할 필요가 없었습니다.
덤프에는 `mysql` 시스템 데이터베이스가 포함되었고,
따라서 stored routine과 이벤트 정의를 담고 있는
`mysql.proc` 및
`mysql.event` 테이블도 포함되었기 때문입니다.
MySQL 9.5부터는
`mysql.event`와 `mysql.proc` 테이블이 사용되지 않습니다.
해당 객체 정의는 data dictionary 테이블에 저장되지만,
이 테이블들은 덤프되지 않습니다.
따라서 stored routine과 이벤트를 덤프에 포함시키려면,
[`--all-databases`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_all-databases)와 함께
[`--routines`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_routines) 및
[`--events`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_events) 옵션을
명시적으로 사용해야 합니다.
- [`--databases`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_databases), `-B`
| Property | Value |
| --- | --- |
| Command-Line Format | `--databases` |
여러 데이터베이스를 덤프합니다.
일반적으로 [**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
커맨드 라인상의 첫 번째 name 인자를 데이터베이스 이름으로,
그 뒤의 name 인자를 테이블 이름으로 처리합니다.
이 옵션을 사용하면 모든 name 인자를 데이터베이스 이름으로 처리합니다.
각 새 데이터베이스 전에
[`CREATE DATABASE`](https://dev.mysql.com/doc/refman/9.5/en/create-database.html "15.1.14 CREATE DATABASE Statement") 및
[`USE`](https://dev.mysql.com/doc/refman/9.5/en/use.html "15.8.4 USE Statement") 문이 출력에 포함됩니다.
이 옵션은 일반적으로 덤프되지 않는
`performance_schema` 데이터베이스를 덤프하는 데 사용할 수 있으며,
이는
[`--all-databases`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_all-databases) 옵션을 사용할 때도 마찬가지입니다.
(이 경우
[`--skip-lock-tables`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_lock-tables)
옵션도 사용하십시오.)
**참고**
[`--add-drop-database`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_add-drop-database)와
[`--databases`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_databases) 간의
호환성 문제에 대한 정보는
[`--add-drop-database`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_add-drop-database)
설명을 참조하십시오.
- [`--events`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_events), `-E`
| Property | Value |
| --- | --- |
| Command-Line Format | `--events` |
덤프된 데이터베이스에 대한 Event Scheduler 이벤트를
출력에 포함합니다.
이 옵션은 해당 데이터베이스에 대한
[`EVENT`](https://dev.mysql.com/doc/refman/9.5/en/privileges-provided.html#priv_event) 권한을 필요로 합니다.
`--events`를 사용하면
이벤트를 생성하는
[`CREATE EVENT`](https://dev.mysql.com/doc/refman/9.5/en/create-event.html "15.1.15 CREATE EVENT Statement") 문이
출력에 포함됩니다.
- [`--exclude-user=user@host`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_exclude-user)
| Property | Value |
| --- | --- |
| Command-Line Format | `--exclude-user=user@host` |
| Type | String |
출력에서 제외할 사용자 계정을
_`user`_@ _`host`_ 포맷으로 지정합니다.
_`user`_와 _`host`_는
single quote(`'`), 공백(``), backslash(`\`),
percent sign(`%`), period(`.`) 중 하나를 포함하지 않는 한
인용부호 없이 사용해야 하며,
이러한 문자를 포함하는 경우 single quote로 감싸야 합니다.
여러 사용자를 제외하려면
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program") 실행 시 이 옵션을
제외할 사용자 계정마다 한 번씩 여러 번 지정하십시오.
`--exclude-user`는
[`--users`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_users) 옵션이
함께 지정되지 않으면 아무런 효과가 없으며,
이 경우 경고를 출력합니다.
또한 지정된 계정을 찾지 못한 경우 경고를 출력합니다.
- [`--include-user=user@host`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_include-user)
| Property | Value |
| --- | --- |
| Command-Line Format | `--include-user=user@host` |
| Type | String |
출력에 포함할 사용자 계정만을
_`user`_@ _`host`_ 포맷으로 지정합니다.
_`user`_와 _`host`_는
single quote(`'`), 공백(``), backslash(`\`),
percent sign(`%`), period(`.`) 중 하나를 포함하지 않는 한
인용부호 없이 사용해야 하며,
이러한 문자를 포함하는 경우 single quote로 감싸야 합니다.
여러 사용자를 포함하려면,
사용자 계정당 한 번씩 이 옵션을 여러 번 사용하십시오.
`--include-user`는
[`--users`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_users) 옵션이
함께 지정되지 않으면 아무런 효과가 없으며,
이 경우 경고를 출력합니다.
`--include-user`로 지정된 계정을 찾지 못하면,
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는 에러를 발생시킵니다.
- [`--ignore-error=error[,error]...`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_ignore-error)
| Property | Value |
| --- | --- |
| Command-Line Format | `--ignore-error=error[,error]...` |
| Type | String |
지정된 에러를 무시합니다.
옵션 값은
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program") 실행 중에 무시할 에러를
콤마로 구분한 에러 번호 리스트입니다.
모든 에러를 무시하는
[`--force`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_force) 옵션도 함께 지정된 경우,
[`--force`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_force)가 우선합니다.
- [`--ignore-table=db_name.tbl_name`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_ignore-table)
| Property | Value |
| --- | --- |
| Command-Line Format | `--ignore-table=db_name.tbl_name` |
| Type | String |
지정된 테이블을 덤프하지 않습니다.
데이터베이스와 테이블 이름을 모두 사용해 지정해야 합니다.
여러 테이블을 무시하려면
이 옵션을 여러 번 사용하십시오.
이 옵션은 뷰를 무시하는 데도 사용할 수 있습니다.
- [`--ignore-views=boolean`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_ignore-views)
| Property | Value |
| --- | --- |
| Command-Line Format | `--ignore-views` |
| Type | Boolean |
| Default Value | `FALSE` |
덤프 파일에서 테이블 뷰를 건너뜁니다.
- [`--init-command=str`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_init-command)
| Property | Value |
| --- | --- |
| Command-Line Format | `--init-command=str` |
| Type | String |
MySQL 서버에 연결한 후 실행할 단일 SQL 문입니다.
이 정의는
[`init-command-add`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_init-command-add)로
이미 정의된 문을 재설정합니다.
- [`--init-command-add=str`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_init-command-add)
| Property | Value |
| --- | --- |
| Command-Line Format | `--init-command-add=str` |
| Type | String |
MySQL 서버에 연결 또는 재연결한 후 실행할 추가 SQL 문을 더합니다.
[`--init-command`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_init-command) 없이도 사용할 수 있지만,
해당 옵션보다 먼저 사용하면 효과가 없습니다.
[`init-command`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_init-command)는
호출할 명령 목록을 재설정하기 때문입니다.
- [`--no-data`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_no-data), `-d`
| Property | Value |
| --- | --- |
| Command-Line Format | `--no-data` |
어떠한 테이블 행 정보도 작성하지 않습니다
(즉, 테이블 내용을 덤프하지 않습니다).
이 옵션은 테이블의
[`CREATE TABLE`](https://dev.mysql.com/doc/refman/9.5/en/create-table.html "15.1.24 CREATE TABLE Statement") 문만 덤프하려는 경우에 유용합니다.
예를 들어, 덤프 파일을 로드하여
테이블의 빈 복사본을 만들 수 있습니다.
- [`--routines`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_routines), `-R`
| Property | Value |
| --- | --- |
| Command-Line Format | `--routines` |
덤프된 데이터베이스에 대한 저장 루틴(procedure와 function)을
출력에 포함합니다.
이 옵션은 global
[`SELECT`](https://dev.mysql.com/doc/refman/9.5/en/privileges-provided.html#priv_select) 권한을 필요로 합니다.
`--routines`를 사용하면,
루틴을 생성하는
[`CREATE PROCEDURE`](https://dev.mysql.com/doc/refman/9.5/en/create-procedure.html "15.1.21 CREATE PROCEDURE and CREATE FUNCTION Statements") 및
[`CREATE FUNCTION`](https://dev.mysql.com/doc/refman/9.5/en/create-function.html "15.1.16 CREATE FUNCTION Statement") 문이
출력에 포함됩니다.
- [`--skip-generated-invisible-primary-key`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_skip-generated-invisible-primary-key)
| Property | Value |
| --- | --- |
| Command-Line Format | `--skip-generated-invisible-primary-key` |
| Type | Boolean |
| Default Value | `FALSE` |
generated invisible primary key를 출력에서 제외합니다.
자세한 내용은
[Section 15.1.24.11, “Generated Invisible Primary Keys”](https://dev.mysql.com/doc/refman/9.5/en/create-table-gipks.html "15.1.24.11 Generated Invisible Primary Keys")를 참조하십시오.
- [`--tables`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_tables)
| Property | Value |
| --- | --- |
| Command-Line Format | `--tables` |
[`--databases`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_databases) 또는
`-B` 옵션을 override합니다.
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
이 옵션 뒤의 모든 name 인자를 테이블 이름으로 처리합니다.
- [`--triggers`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_triggers)
| Property | Value |
| --- | --- |
| Command-Line Format | `--triggers` |
| Disabled by | `skip-triggers` |
각 덤프된 테이블에 대한 트리거를 출력에 포함합니다.
이 옵션은 기본적으로 활성화되어 있으며,
`--skip-triggers`로 비활성화할 수 있습니다.
테이블의 트리거를 덤프하려면,
해당 테이블에 대한
[`TRIGGER`](https://dev.mysql.com/doc/refman/9.5/en/privileges-provided.html#priv_trigger) 권한이 필요합니다.
여러 트리거가 허용됩니다.
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
activation 순서대로 트리거를 덤프하므로,
덤프 파일을 다시 로드할 때 트리거가 동일한 activation 순서로 생성됩니다.
그러나 덤프 파일에 동일한 트리거 event와 action time을 가진
테이블에 대한 여러 트리거가 포함된 경우,
이러한 트리거를 지원하지 않는
이전 서버에 덤프 파일을 로드하려 하면 에러가 발생합니다.
(workaround는
[Downgrade Notes](https://dev.mysql.com/doc/refman/5.7/en/downgrading-to-previous-series.html)를 참조하십시오.
이전 서버와 호환되도록 트리거를 변환할 수 있습니다.)
- [`--users`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_users)
| Property | Value |
| --- | --- |
| Command-Line Format | `--users[={true|false}]` |
| Type | Boolean |
[`CREATE USER`](https://dev.mysql.com/doc/refman/9.5/en/create-user.html "15.7.1.3 CREATE USER Statement") 및
[`GRANT`](https://dev.mysql.com/doc/refman/9.5/en/grant.html "15.7.1.6 GRANT Statement") 문 형태로
계정 정보를 덤프에 포함합니다.
덤프의 CREATE USER 문 앞에 DROP USER 문을 포함하려면,
`--users`와 함께
[`--add-drop-user`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_add-drop-user) 옵션을 지정하십시오.
기본적으로 모든 사용자 계정에 대한 정보를 포함합니다.
특정 사용자만 포함하려면
[`--include-user`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_include-user) 옵션을 사용하고,
하나 이상의 사용자를 제외하려면
[`--exclude-user`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_exclude-user)를 사용하십시오.
`--users` 옵션은
[`--flush-privileges`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_flush-privileges) 옵션과
호환되지 않습니다.
둘 다 지정하면 에러가 발생합니다.
또한 `--users` 출력은
[`--xml`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_xml) 옵션과
호환되지 않습니다.
`--users` 옵션을 사용하는 경우,
다음에 나열된 `mysql` 데이터베이스의 여러 테이블이
덤프에서 제외되는 테이블 리스트에 추가됩니다.
이 테이블들은, 일반적으로 `mysql` 데이터베이스가 덤프 대상인 경우에도
덤프에 포함되지 않습니다:
- `mysql.user`
- `mysql.global_grants`
- `mysql.db`
- `mysql.tables_priv`
- `mysql.columns.priv`
- `mysql.procs_priv`
- `mysql.proxies_priv`
- `mysql.default_roles`
- `mysql.role_edges`
- `mysql.password_history`
- [`--where='where_condition'`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_where), `-w 'where_condition'`
| Property | Value |
| --- | --- |
| Command-Line Format | `--where='where_condition'` |
주어진 `WHERE` 조건으로 선택된 행만 덤프합니다.
조건에 공백이나 커맨드 인터프리터에 특수한 문자가 포함된 경우,
조건을 따옴표로 감싸야 합니다.
예:
```terminal
--where="user='jimf'"
-w"userid>1"
-w"userid<1"
```
#### Performance Options
다음 옵션들은 특히 복원 작업의 성능과 가장 관련이 깊습니다.
대량 데이터 집합의 경우,
덤프 파일의 `INSERT` 문을 처리하는 복원 작업이
가장 시간이 많이 소요되는 단계입니다.
데이터를 빠르게 복원하는 것이 중요한 경우,
이 단계를 미리 계획하고 성능을 테스트해야 합니다.
복원 시간이 시간 단위로 측정될 정도로 길다면,
`InnoDB` 전용 및 mixed-use 데이터베이스에 대해
[MySQL Enterprise Backup](https://dev.mysql.com/doc/refman/9.5/en/mysql-enterprise-backup.html "32.1 MySQL Enterprise Backup Overview")과 같은
대체 백업 및 복원 솔루션을 고려할 수 있습니다.
덤프 작업에 대해서는,
주로 [transactional options](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#mysqldump-transaction-options "Transactional Options")가
성능에 영향을 미칩니다.
- [`--column-statistics`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_column-statistics)
| Property | Value |
| --- | --- |
| Command-Line Format | `--column-statistics` |
| Type | Boolean |
| Default Value | `OFF` |
덤프 파일이 다시 로드될 때,
덤프된 테이블에 대한 히스토그램 통계를 생성하기 위해
[`ANALYZE TABLE`](https://dev.mysql.com/doc/refman/9.5/en/analyze-table.html "15.7.3.1 ANALYZE TABLE Statement") 문을
출력에 추가합니다.
대형 테이블에 대해 히스토그램을 생성하는 데 오랜 시간이 걸릴 수 있으므로,
이 옵션은 기본적으로 비활성화되어 있습니다.
- [`--disable-keys`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_disable-keys), `-K`
| Property | Value |
| --- | --- |
| Command-Line Format | `--disable-keys` |
각 테이블에 대해
[`INSERT`](https://dev.mysql.com/doc/refman/9.5/en/insert.html "15.2.7 INSERT Statement") 문을
`/*!40000 ALTER TABLE
tbl_name DISABLE KEYS
*/;`와
`/*!40000 ALTER TABLE
tbl_name ENABLE KEYS
*/;` 문으로 감쌉니다.
이렇게 하면 모든 행이 삽입된 뒤 인덱스가 생성되므로,
덤프 파일을 로드하는 속도가 빨라집니다.
이 옵션은 `MyISAM` 테이블의 nonunique 인덱스에만 효과가 있습니다.
- [`--extended-insert`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_extended-insert), `-e`
| Property | Value |
| --- | --- |
| Command-Line Format | `--extended-insert` |
| Disabled by | `skip-extended-insert` |
여러 개의 `VALUES` 리스트를 포함하는
multiple-row 구문을 사용하는
[`INSERT`](https://dev.mysql.com/doc/refman/9.5/en/insert.html "15.2.7 INSERT Statement") 문을 작성합니다.
이 방법은 덤프 파일 크기를 줄이고,
파일을 다시 로드할 때 insert 속도를 높여줍니다.
- [`--insert-ignore`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_insert-ignore)
| Property | Value |
| --- | --- |
| Command-Line Format | `--insert-ignore` |
[`INSERT`](https://dev.mysql.com/doc/refman/9.5/en/insert.html "15.2.7 INSERT Statement") 문 대신
[`INSERT IGNORE`](https://dev.mysql.com/doc/refman/9.5/en/insert.html "15.2.7 INSERT Statement") 문을 작성합니다.
- [`--max-allowed-packet=value`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_max-allowed-packet)
| Property | Value |
| --- | --- |
| Command-Line Format | `--max-allowed-packet=value` |
| Type | Numeric |
| Default Value | `25165824` |
클라이언트/서버 통신을 위한 버퍼의 최대 크기입니다.
기본 값은 24MB이고, 최대 값은 1GB입니다.
**참고**
이 옵션의 값은 [**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")에만 적용되며,
MySQL 서버의
[`max_allowed_packet`](https://dev.mysql.com/doc/refman/9.5/en/server-system-variables.html#sysvar_max_allowed_packet) 시스템 변수와
혼동해서는 안 됩니다.
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")에서 보내는 단일 패킷은,
해당 옵션 설정이 더 크더라도
서버의 `max_allowed_packet` 값을 초과할 수 없습니다.
- [`--mysqld-long-query-time=value`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_mysqld-long-query-time)
| Property | Value |
| --- | --- |
| Command-Line Format | `--mysqld-long-query-time=value` |
| Type | Numeric |
| Default Value | `Server global setting` |
[`long_query_time`](https://dev.mysql.com/doc/refman/9.5/en/server-system-variables.html#sysvar_long_query_time)
시스템 변수에 대한 세션 값을 설정합니다.
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")의 쿼리가
slow query 로그 파일에 기록되기 전에 허용되는 시간을 늘리려는 경우
이 옵션을 사용하십시오.
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는 full 테이블 스캔을 수행하므로,
일반 쿼리에 적합한 global
[`long_query_time`](https://dev.mysql.com/doc/refman/9.5/en/server-system-variables.html#sysvar_long_query_time) 설정을
초과하는 경우가 자주 발생할 수 있습니다.
기본 global 설정은 10초입니다.
[`--mysqld-long-query-time`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_mysqld-long-query-time)를 사용하여,
0(모든 쿼리가 slow query 로그에 기록됨)에서 31536000(365일의 초 단위) 사이의
세션 값을 지정할 수 있습니다.
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program") 옵션에서는
정수 초만 지정할 수 있습니다.
이 옵션을 지정하지 않으면,
서버의 global 설정이
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program") 쿼리에 적용됩니다.
- [`--net-buffer-length=value`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_net-buffer-length)
| Property | Value |
| --- | --- |
| Command-Line Format | `--net-buffer-length=value` |
| Type | Numeric |
| Default Value | `16384` |
클라이언트/서버 통신을 위한 버퍼의 초기 크기입니다.
[`--extended-insert`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_extended-insert) 또는
[`--opt`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_opt) 옵션처럼
multiple-row
[`INSERT`](https://dev.mysql.com/doc/refman/9.5/en/insert.html "15.2.7 INSERT Statement") 문을 생성하는 경우,
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
[`--net-buffer-length`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_net-buffer-length) 바이트 길이까지 행을 생성합니다.
이 변수를 늘리는 경우,
MySQL 서버의
[`net_buffer_length`](https://dev.mysql.com/doc/refman/9.5/en/server-system-variables.html#sysvar_net_buffer_length) 시스템 변수 값이
최소한 이 값만큼 크도록 해야 합니다.
- [`--network-timeout`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_network-timeout), `-M`
| Property | Value |
| --- | --- |
| Command-Line Format | `--network-timeout[={0|1}]` |
| Type | Boolean |
| Default Value | `TRUE` |
[`--max-allowed-packet`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_max-allowed-packet)을
최대 값으로 설정하고,
네트워크 읽기/쓰기 타임아웃을 크게 늘려
대형 테이블을 덤프할 수 있게 합니다.
이 옵션은 기본적으로 활성화되어 있습니다.
이를 비활성화하려면
[`--skip-network-timeout`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_network-timeout)을 사용하십시오.
- [`--opt`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_opt)
| Property | Value |
| --- | --- |
| Command-Line Format | `--opt` |
| Disabled by | `skip-opt` |
이 옵션은 기본적으로 활성화되어 있으며,
다음 옵션들의 조합에 대한 약어입니다:
[`--add-drop-table`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_add-drop-table)
[`--add-locks`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_add-locks)
[`--create-options`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_create-options)
[`--disable-keys`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_disable-keys)
[`--extended-insert`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_extended-insert)
[`--lock-tables`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_lock-tables)
[`--quick`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_quick)
[`--set-charset`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_set-charset).
이 옵션은 빠른 덤프 작업을 제공하며,
MySQL 서버에 빠르게 다시 로드할 수 있는 덤프 파일을 생성합니다.
`--opt` 옵션은 기본적으로 활성화되어 있으므로,
일반적으로 `--opt`를 명시할 필요는 없으며,
대신 `--skip-opt`를 사용해
여러 default 설정을 한 번에 비활성화할 수 있습니다.
`mysqldump` option groups](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#mysqldump-option-groups "Option Groups")에 대한 논의에서
`--opt`의 영향을 받는 옵션 중 일부를
선택적으로 활성화 또는 비활성화하는 방법을 확인하십시오.
- [`--quick`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_quick), `-q`
| Property | Value |
| --- | --- |
| Command-Line Format | `--quick` |
| Disabled by | `skip-quick` |
대형 테이블을 덤프하는 데 유용한 옵션입니다.
이 옵션은
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")가
테이블에 대한 행 집합 전체를 가져오고 메모리에 버퍼한 뒤
기록하는 대신,
서버에서 한 번에 한 행씩 가져오도록 합니다.
- [`--skip-opt`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_skip-opt)
| Property | Value |
| --- | --- |
| Command-Line Format | `--skip-opt` |
[`--opt`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_opt) 옵션 설명을 참조하십시오.
#### Transactional Options
다음 옵션들은 덤프 작업의 성능과
export된 데이터의 신뢰성 및 일관성 사이의 균형을 조절합니다.
- [`--add-locks`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_add-locks)
| Property | Value |
| --- | --- |
| Command-Line Format | `--add-locks` |
각 테이블 덤프를
[`LOCK TABLES`](https://dev.mysql.com/doc/refman/9.5/en/lock-tables.html "15.3.6 LOCK TABLES and UNLOCK TABLES Statements") 및
[`UNLOCK TABLES`](https://dev.mysql.com/doc/refman/9.5/en/lock-tables.html "15.3.6 LOCK TABLES and UNLOCK TABLES Statements") 문으로 감쌉니다.
이렇게 하면 덤프 파일을 다시 로드할 때 insert 속도가 빨라집니다.
[Section 10.2.5.1, “Optimizing INSERT Statements”](https://dev.mysql.com/doc/refman/9.5/en/insert-optimization.html "10.2.5.1 Optimizing INSERT Statements")를 참조하십시오.
- [`--flush-logs`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_flush-logs), `-F`
| Property | Value |
| --- | --- |
| Command-Line Format | `--flush-logs` |
덤프를 시작하기 전에 MySQL 서버 로그 파일을 flush합니다.
이 옵션은
[`RELOAD`](https://dev.mysql.com/doc/refman/9.5/en/privileges-provided.html#priv_reload) 권한을 필요로 합니다.
이 옵션을
[`--all-databases`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_all-databases) 옵션과
함께 사용하면,
_각 데이터베이스가 덤프될 때마다_ 로그가 flush됩니다.
예외는
[`--lock-all-tables`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_lock-all-tables),
[`--source-data`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_source-data),
[`--single-transaction`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_single-transaction)를
사용하는 경우입니다.
이 경우 로그는
[`FLUSH TABLES WITH READ LOCK`](https://dev.mysql.com/doc/refman/9.5/en/flush.html#flush-tables-with-read-lock)에 의해
모든 테이블이 잠기는 시점에 한 번만 flush됩니다.
덤프와 로그 flush가 정확히 같은 시점에 수행되기를 원한다면,
`--flush-logs`를
[`--lock-all-tables`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_lock-all-tables),
[`--source-data`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_source-data),
[`--single-transaction`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_single-transaction)과
함께 사용해야 합니다.
- [`--flush-privileges`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_flush-privileges)
| Property | Value |
| --- | --- |
| Command-Line Format | `--flush-privileges` |
`mysql` 데이터베이스를 덤프한 후,
덤프 출력에 [`FLUSH PRIVILEGES`](https://dev.mysql.com/doc/refman/9.5/en/flush.html#flush-privileges) 문을 추가합니다.
덤프에 `mysql` 데이터베이스와
해당 데이터베이스의 데이터에 의존하는 다른 데이터베이스가 포함되어
올바르게 복원해야 할 때마다 이 옵션을 사용해야 합니다.
덤프 파일에 [`FLUSH PRIVILEGES`](https://dev.mysql.com/doc/refman/9.5/en/flush.html#flush-privileges) 문이 포함되므로,
파일을 다시 로드하려면
해당 문을 실행할 수 있는 권한이 필요합니다.
이 옵션은
[`--users`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_users) 옵션과
호환되지 않습니다.
두 옵션을 동시에 사용하려 하면 에러가 발생합니다.
- [`--lock-all-tables`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_lock-all-tables), `-x`
| Property | Value |
| --- | --- |
| Command-Line Format | `--lock-all-tables` |
모든 데이터베이스에 걸쳐 모든 테이블을 잠급니다.
덤프 전체 동안 global read lock을 획득함으로써 이 작업을 수행합니다.
이 옵션은 자동으로
[`--single-transaction`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_single-transaction)과
[`--lock-tables`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_lock-tables)를
비활성화합니다.
- [`--lock-tables`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_lock-tables), `-l`
| Property | Value |
| --- | --- |
| Command-Line Format | `--lock-tables` |
각 덤프된 데이터베이스에 대해,
덤프 전에 덤프 대상 모든 테이블을 잠급니다.
`MyISAM` 테이블의 경우 concurrent insert를 허용하기 위해
`READ LOCAL`로 테이블을 잠급니다.
`InnoDB` 같은 트랜잭션 테이블에는
[`--single-transaction`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_single-transaction)이
테이블을 잠글 필요가 없으므로 훨씬 더 나은 옵션입니다.
`--lock-tables`는 각 데이터베이스별로 테이블을 잠그므로,
덤프 파일에 포함된 서로 다른 데이터베이스의 테이블이
논리적으로 일관된 상태라는 것을 보장하지 않습니다.
서로 다른 데이터베이스의 테이블은 완전히 다른 시점의 상태로 덤프될 수 있습니다.
[`--opt`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_opt)처럼
일부 옵션은 자동으로 `--lock-tables`를 활성화합니다.
이를 override하려면,
옵션 리스트의 마지막에 `--skip-lock-tables`를 사용하십시오.
- [`--no-autocommit`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_no-autocommit)
| Property | Value |
| --- | --- |
| Command-Line Format | `--no-autocommit` |
각 덤프된 테이블에 대한
[`INSERT`](https://dev.mysql.com/doc/refman/9.5/en/insert.html "15.2.7 INSERT Statement") 문을
`SET autocommit = 0` 및
[`COMMIT`](https://dev.mysql.com/doc/refman/9.5/en/commit.html "15.3.1 START TRANSACTION, COMMIT, and ROLLBACK Statements") 문으로 감쌉니다.
- [`--order-by-primary`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_order-by-primary)
| Property | Value |
| --- | --- |
| Command-Line Format | `--order-by-primary` |
각 테이블의 행을 primary key 또는
첫 번째 unique 인덱스 기준으로 정렬하여 덤프합니다.
이는 `MyISAM` 테이블을 덤프한 후
`InnoDB` 테이블로 로드할 때 유용하지만,
덤프 작업에 상당한 시간이 더 소요됩니다.
- [`--shared-memory-base-name=name`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_shared-memory-base-name)
| Property | Value |
| --- | --- |
| Command-Line Format | `--shared-memory-base-name=name` |
| Platform Specific | Windows |
Windows에서, local 서버에 대한 shared-memory 연결에 사용할
shared-memory 이름입니다.
기본 값은 `MYSQL`입니다.
shared-memory 이름은 대소문자를 구분합니다.
이 옵션은 서버가
[`shared_memory`](https://dev.mysql.com/doc/refman/9.5/en/server-system-variables.html#sysvar_shared_memory)
시스템 변수를 활성화하여
shared-memory 연결을 지원하도록 시작된 경우에만 적용됩니다.
- [`--single-transaction`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_single-transaction)
| Property | Value |
| --- | --- |
| Command-Line Format | `--single-transaction` |
이 옵션은 트랜잭션 isolation 모드를
[`REPEATABLE READ`](https://dev.mysql.com/doc/refman/9.5/en/innodb-transaction-isolation-levels.html#isolevel_repeatable-read)로 설정하고,
데이터를 덤프하기 전에 서버에
[`START TRANSACTION`](https://dev.mysql.com/doc/refman/9.5/en/commit.html "15.3.1 START TRANSACTION, COMMIT, and ROLLBACK Statements") SQL 문을 전송합니다.
이 옵션은 `InnoDB`와 같은 트랜잭션 테이블에만 유용합니다.
이 경우, [`START TRANSACTION`](https://dev.mysql.com/doc/refman/9.5/en/commit.html "15.3.1 START TRANSACTION, COMMIT, and ROLLBACK Statements")이
발행된 시점의 데이터베이스 일관 상태를
어떠한 애플리케이션도 block하지 않고 덤프합니다.
[`gtid_mode=ON`](https://dev.mysql.com/doc/refman/9.5/en/replication-options-gtids.html#sysvar_gtid_mode) 및
[`gtid_purged=ON|AUTO`](https://dev.mysql.com/doc/refman/9.5/en/replication-options-gtids.html#sysvar_gtid_purged)가
모두 설정된 경우,
[`--single-transaction`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_single-transaction)을 사용하려면
[`RELOAD`](https://dev.mysql.com/doc/refman/9.5/en/privileges-provided.html#priv_reload) 또는
[`FLUSH_TABLES`](https://dev.mysql.com/doc/refman/9.5/en/privileges-provided.html#priv_flush-tables) 권한이 필요합니다.
이 옵션을 사용할 때,
`InnoDB` 테이블만 일관된 상태로 덤프된다는 점을 유념해야 합니다.
예를 들어, 이 옵션을 사용하는 동안 덤프되는
`MyISAM` 또는 `MEMORY` 테이블은
여전히 상태가 변경될 수 있습니다.
[`--single-transaction`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_single-transaction) 덤프 작업이 진행되는 동안,
유효한 덤프 파일(올바른 테이블 내용과 binary log 좌표)을 보장하려면,
다음 문들은 다른 연결에서 사용하지 않아야 합니다:
[`ALTER TABLE`](https://dev.mysql.com/doc/refman/9.5/en/alter-table.html "15.1.11 ALTER TABLE Statement"),
[`CREATE TABLE`](https://dev.mysql.com/doc/refman/9.5/en/create-table.html "15.1.24 CREATE TABLE Statement"),
[`DROP TABLE`](https://dev.mysql.com/doc/refman/9.5/en/drop-table.html "15.1.37 DROP TABLE Statement"),
[`RENAME TABLE`](https://dev.mysql.com/doc/refman/9.5/en/rename-table.html "15.1.41 RENAME TABLE Statement"),
[`TRUNCATE TABLE`](https://dev.mysql.com/doc/refman/9.5/en/truncate-table.html "15.1.42 TRUNCATE TABLE Statement").
consistent read는 이러한 문들로부터
분리되어 있지 않으므로,
덤프 대상 테이블에 대해 해당 문을 사용하면,
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")가
테이블 내용을 가져오기 위해 수행하는
[`SELECT`](https://dev.mysql.com/doc/refman/9.5/en/select.html "15.2.13 SELECT Statement")가
잘못된 내용을 가져오거나 실패할 수 있습니다.
`--single-transaction` 옵션과
[`--lock-tables`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_lock-tables) 옵션은
상호 배타적입니다.
[`LOCK TABLES`](https://dev.mysql.com/doc/refman/9.5/en/lock-tables.html "15.3.6 LOCK TABLES and UNLOCK TABLES Statements")는
대기 중인 트랜잭션을 암묵적으로 commit하기 때문입니다.
대형 테이블을 덤프하려면,
`--single-transaction` 옵션을
[`--quick`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_quick) 옵션과 함께 사용하십시오.
#### Option Groups
- [`--opt`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_opt) 옵션은
함께 사용되었을 때 빠른 덤프 작업을 수행하는
여러 설정을 활성화합니다.
이러한 설정은 모두 기본적으로 on 상태이며,
이는 `--opt`가 기본 활성화되어 있기 때문입니다.
따라서 `--opt`를 명시하는 경우는 드물며,
대신 `--skip-opt`를 지정하여
이 설정들을 한 번에 off로 전환한 다음,
관련 옵션을 커맨드 라인의 뒤쪽에서 지정하여
일부 설정을 다시 활성화할 수 있습니다.
- [`--compact`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_compact) 옵션은
출력에 optional 문과 주석이 포함될지 여부를 제어하는
여러 설정을 비활성화합니다.
마찬가지로, 이 옵션 뒤에
일부 설정을 다시 활성화하는 다른 옵션을 지정할 수 있으며,
또는 `--skip-compact` 형식을 사용해
모든 설정을 on으로 전환할 수 있습니다.
group 옵션의 효과를 선택적으로 활성화하거나 비활성화할 때,
옵션은 앞에서부터 순서대로 처리되므로 순서가 중요합니다.
예를 들어,
[`--disable-keys`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_disable-keys)
[`--lock-tables`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_lock-tables)
[`--skip-opt`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_skip-opt)는
의도한 효과를 내지 못하며,
실제로는 단독 `--skip-opt`와 동일합니다.
#### Examples
전체 데이터베이스를 백업하려면:
```terminal
mysqldump db_name > backup-file.sql
```
덤프 파일을 서버로 다시 로드하려면:
```terminal
mysql db_name < backup-file.sql
```
덤프 파일을 다시 로드하는 또 다른 방법:
```terminal
mysql -e "source /path-to-backup/backup-file.sql" db_name
```
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
한 MySQL 서버에서 다른 서버로 데이터를 copy하여
데이터베이스를 채우는 데에도 매우 유용합니다:
```terminal
mysqldump --opt db_name | mysql --host=remote_host -C db_name
```
하나의 명령으로 여러 데이터베이스를 덤프할 수 있습니다:
```terminal
mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql
```
모든 데이터베이스를 덤프하려면
[`--all-databases`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_all-databases) 옵션을 사용하십시오:
```terminal
mysqldump --all-databases > all_databases.sql
```
`InnoDB` 테이블의 경우,
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
online 백업을 수행하는 방법을 제공합니다:
```terminal
mysqldump --all-databases --source-data --single-transaction > all_databases.sql
```
이 백업은 덤프 시작 시점에
[`FLUSH TABLES WITH READ LOCK`](https://dev.mysql.com/doc/refman/9.5/en/flush.html#flush-tables-with-read-lock)을 사용해
모든 테이블에 대해 global read lock을 획득합니다.
이 lock이 획득되면,
binary log 좌표를 읽고 lock을 해제합니다.
[`FLUSH`](https://dev.mysql.com/doc/refman/9.5/en/flush.html "15.7.8.3 FLUSH Statement") 문이 실행될 때
long running update 문이 있으면,
해당 문이 완료될 때까지 MySQL 서버가 멈춘 것처럼 보일 수 있습니다.
그 이후에는 덤프가 lock 없이 진행되며,
테이블에 대한 read와 write를 방해하지 않습니다.
MySQL 서버가 받는 update 문의 실행 시간이 짧다면,
초기 lock 기간은 update가 많더라도 거의 눈에 띄지 않을 것입니다.
point-in-time 복구(“roll-forward”라고도 함)는
오래된 백업을 복원한 다음,
그 이후로 발생한 변경 사항을 재생해야 할 때 유용합니다.
이 경우 binary log를 rotate하거나
( [Section 7.4.4, “The Binary Log”](https://dev.mysql.com/doc/refman/9.5/en/binary-log.html "7.4.4 The Binary Log") 참조),
덤프가 어떤 binary log 좌표에 해당하는지 알아두는 것이 좋습니다:
```terminal
mysqldump --all-databases --source-data=2 > all_databases.sql
```
또는:
```terminal
mysqldump --all-databases --flush-logs --source-data=2 > all_databases.sql
```
[`--source-data`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_source-data) 옵션은
[`--single-transaction`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_single-transaction) 옵션과
동시에 사용할 수 있으며,
테이블이 `InnoDB` 스토리지 엔진을 사용할 때,
point-in-time 복구 이전에 사용할 수 있는
online 백업을 편리하게 만드는 방법입니다.
백업 작업에 대한 자세한 내용은
[Section 9.2, “Database Backup Methods”](https://dev.mysql.com/doc/refman/9.5/en/backup-methods.html "9.2 Database Backup Methods")와
[Section 9.3, “Example Backup and Recovery Strategy”](https://dev.mysql.com/doc/refman/9.5/en/backup-strategy-example.html "9.3 Example Backup and Recovery Strategy")를 참조하십시오.
- [`--opt`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_opt)의 효과 중
일부를 제외하고 나머지만 사용하려면,
각 feature에 대해 `--skip` 옵션을 사용하십시오.
extended insert와 메모리 버퍼링을 비활성화하려면,
[`--opt`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_opt)
[`--skip-extended-insert`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_extended-insert)
[`--skip-quick`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_quick)을 사용하십시오.
(실제로는,
[`--skip-extended-insert`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_extended-insert)
[`--skip-quick`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_quick)만으로 충분합니다.
`--opt`는 기본적으로 on 상태이기 때문입니다.)
- [`--opt`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_opt)의 효과 중
인덱스 비활성화와 테이블 locking만 제외하고 모두 비활성화하려면,
[`--skip-opt`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_skip-opt)
[`--disable-keys`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_disable-keys)
[`--lock-tables`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_lock-tables)을 사용하십시오.
#### Restrictions
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는 기본적으로
`performance_schema`나 `sys` 스키마를 덤프하지 않습니다.
이들을 덤프하려면, 커맨드 라인에서 명시적으로 이름을 지정해야 합니다.
또는 이들을
[`--databases`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_databases) 옵션과 함께
지정할 수도 있습니다.
`performance_schema`를 덤프할 경우,
[`--skip-lock-tables`](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html#option_mysqldump_lock-tables) 옵션도 사용하십시오.
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
`INFORMATION_SCHEMA` 스키마를 덤프하지 않습니다.
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
`InnoDB`의
[`CREATE TABLESPACE`](https://dev.mysql.com/doc/refman/9.5/en/create-tablespace.html "15.1.25 CREATE TABLESPACE Statement") 문을
덤프하지 않습니다.
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
NDB Cluster
[`ndbinfo`](https://dev.mysql.com/doc/refman/9.5/en/mysql-cluster-ndbinfo.html "25.6.15 ndbinfo: The NDB Cluster Information Database") information 데이터베이스를
덤프하지 않습니다.
[**mysqldump**](https://dev.mysql.com/doc/refman/9.5/en/mysqldump.html "6.5.4 mysqldump — A Database Backup Program")는
`mysql` 데이터베이스를 덤프할 때
`general_log` 및
`slow_query_log` 테이블을 다시 생성하는 문을 포함합니다.
로그 테이블의 내용은 덤프하지 않습니다.
뷰를 백업하는 동안 권한 부족으로 인해 문제가 발생하는 경우,
workaround는
[Section 27.11, “Restrictions on Views”](https://dev.mysql.com/doc/refman/9.5/en/view-restrictions.html "27.11 Restrictions on Views")를 참조하십시오.
6.5.3 mysqlcheck — A Table Maintenance Program
6.5.5 mysqlimport — A Data Import Program