• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 1. MySQL 프로그램 개요
    2. MySQL 프로그램 사용
    3. MySQL 서버와 서버 시작 프로그램
    4. 설치 관련 프로그램
    5. 클라이언트 프로그램
    1. mysql - MySQL 명령 행 도구
    2. mysqladmin - MySQL 서버를 관리하는 클라이언트
    3. mysqlcheck - 테이블 관리 프로그램
    4. mysqldump - 데이터베이스 백업 프로그램
    5. mysqlimport - 데이터 가져 오기 프로그램
    6. mysqlshow - 데이터베이스, 테이블 및 컬럼 정보보기
    7. mysqlslap - 부하 에뮬레이션 클라이언트
    6. MySQL 관리 프로그램 및 유틸리티 프로그램
    7. MySQL 프로그램 개발 유틸리티
    8. 기타 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

4.5.4 mysqldump - 데이터베이스 백업 프로그램

mysqldump 클라이언트는 논리적 백업 을 수행하는 유틸리티에서 소스의 스키마 객체 테이블 데이터 또는 모두를 재현하기 위해 수행 할 수있는 SQL 문 세트를 생성합니다. 백업 또는 다른 SQL 서버로 전송을 위해 하나 이상의 MySQL 데이터베이스를 덤프합니다. mysqldump 명령은 CSV 다른 구분 기호로 구분 된 텍스트 또는 XML 포맷으로 출력을 생성 할 수 있습니다.

mysqldump는 덤프 된 테이블에 대한 SELECT 권한 덤프되는 뷰에 대한 SHOW VIEW 덤프되는 트리거에 대한 TRIGGER 및 --single-transaction 옵션이 사용되지 않는 경우에는 LOCK TABLES 이 적어도 필요합니다. 옵션의 설명과 같이 일부 옵션은 다른 권한이 필요할 수 있습니다.

덤프 파일을 다시로드하려면 CREATE 문을 수동으로 발행하여 덤프되는 각 개체를 만드는 데 필요한 권한과 같은 것을 가지고 있지 않으면 안됩니다.

mysqldump 출력은 데이터베이스의 데이터 정렬을 변경하는 ALTER DATABASE 문을 포함 할 수 있습니다. 이러한 저장 프로 프로그램을 덤프 할 때 문자 인코딩을 유지하기 위해 사용할 수 있습니다. 이 같은 문을 포함하는 덤프 파일을 다시로드하려면 영향을받는 데이터베이스에 대한 ALTER 권한이 필요합니다.

성능 및 확장 성 고려 사항

mysqldump 의 장점은 복원하기 전에 출력을 표시하고 편집 할 수 있다는 편리함과 유연성이 있습니다. 개발 및 데이터베이스 관리를위한 데이터베이스를 복제하거나 테스트를 위해 기존의 데이터베이스와 약간 다른 데이터베이스를 만들 수 있습니다. 대량의 데이터 백업을위한 빠르고 확장 가능한 솔루션을 의도 한 것은 아닙니다. 데이터 크기가 큰 경우 백업 단계에 걸리는 시간이 타당하다고해도 SQL 문 재현에 삽입 및 인덱싱 등의 디스크 I / O가 포함되어 있기 때문에 데이터의 복원에 매우 긴 시간 이 걸릴 수 있습니다.

대규모 백업 및 복원은 데이터 파일을 빠르게 복원 할 원본 형식으로 복사하는 물리적 백업하는 것이 좋습니다.

  • 테이블이 주로 InnoDB 테이블 인 경우, 또는 InnoDB 테이블과 MyISAM 테이블이 혼재하는 경우는 MySQL Enterprise Backup 제품 mysqlbackup 명령을 사용하는 것을 고려하십시오. (Enterprise 구독의 일부로 포함되어 있습니다.) 이렇게하면 최소한의 중단에서 가장 성능이 좋은 InnoDB 백업을 실행할 수 있습니다. 또한 MyISAM 및 기타 스토리지 엔진에서 테이블 백업 할 수 다양한 백업 시나리오에 대응하기위한 유용한 다양한 옵션을 제공합니다. 섹션 25.2 "MySQL Enterprise Backup" 을 참조하십시오.

  • 테이블이 주로 MyISAM 테이블 인 경우는 대신 mysqlhotcopy를 사용하는 것을 고려하십시오. mysqldump 백업 및 복원 작업보다 뛰어난 성능을 제공합니다. 섹션 4.6.10 "mysqlhotcopy - 데이터베이스 백업 프로그램" 을 참조하십시오.

mysqldump는 테이블의 내용을 동시에 전달하여 덤프 할 덤프하기 전에 테이블에서 모든 내용을 검색하여 메모리에 버퍼링 할 수 있습니다. 큰 테이블을 덤프하는 경우 메모리에 버퍼링이 문제가되는 경우가 있습니다. 테이블을 한 줄씩 덤프하는 경우, --quick 옵션을 사용하십시오 (또는 --opt 를 지정하면 --quick 이 활성화됩니다). --opt 옵션은 (따라서 --quick 도) 기본적으로 사용하기 때문에 메모리에 버퍼링을 활성화하려면 --skip-quick 을 사용합니다.

최신 버전의 mysqldump를 사용하여 아주 오래된 MySQL 서버에 장전되는 덤프를 생성하는 경우 --opt 옵션 또는 --extended-insert 옵션 대신에 --skip-opt 옵션을 사용합니다 .

mysqldump 대한 자세한 내용은 섹션 7.4 "백업에 mysqldump 사용" 을 참조하십시오.

구문

다음과 같이 일반적으로 mysqldump를 사용하려면 하나 이상의 테이블 세트 덤프 하나 이상의 완전한 데이터베이스 세트 또는 MySQL 서버 전체의 3 가지 방법이 있습니다.

 shell> mysqldump [ options ] db_name [ tbl_name ...]
 shell> mysqldump [ options ] --databases db_name ...
 shell> mysqldump [ options ] --all-databases

전체 데이터베이스를 덤프하려면 db_name 계속 테이블을 지명하지 않거나 또는 --databases 옵션 또는 --all-databases 옵션을 사용합니다.

사용하는 버전의 mysqldump가 지원하는 옵션 목록을 표시하려면 명령 mysqldump --help를 실행합니다.

옵션 구문 - 알파벳 요약

mysqldump는 다음 옵션을 지원합니다. 이들은 명령 행 또는 옵션 파일의 [mysqldump] 그룹과 [client] 그룹에 지정할 수 있습니다. MySQL 프로그램에서 사용되는 옵션 파일에 대한 자세한 내용은 섹션 4.2.6 "옵션 파일 사용" 을 참조하십시오.

표 4.8 mysqldump 옵션

형식 설명 도입
--add-drop-database DROP DATABASE 문을 CREATE DATABASE 문 앞에 추가
--add-drop-table DROP TABLE 문을 CREATE TABLE 문 앞에 추가
--add-drop-trigger DROP TRIGGER 문을 CREATE TRIGGER 문 앞에 추가
--add-locks LOCK TABLES와 UNLOCK TABLES 문에서 각 테이블 덤프를 둘러싸
--all-databases 모든 데이터베이스의 모든 테이블을 덤프
--allow-keywords 키워드 인 컬럼 이름의 작성을 허가
--apply-slave-statements CHANGE MASTER 명령문 앞에 STOP SLAVE를 포함한 START SLAVE를 출력 끝에 포함
--bind-address 지정된 네트워크 인터페이스를 사용하여 MySQL 서버에 연결 5.6.1
--comments 덤프 파일에 코멘트를 추가
--compact 보다 컴팩트 한 출력을 생성
--compatible 이전 MySQL 서버 나 다른 데이터베이스 시스템과의 호환성이 더 높은 출력을 생성
--complete-insert 컬럼 이름을 포함한 전체 INSERT 문을 사용
--create-options 모든 MySQL에 고유 테이블 옵션을 CREATE TABLE 문에 포함
--databases 여러 데이터베이스를 덤프
--debug 디버깅 로그를 작성한다
--debug-check 프로그램이 종료 될 때 디버깅 정보를 출력
--debug-info 프로그램 종료시 디버그 정보, 메모리 및 CPU 통계를 출력
--default-auth 사용하는 인증 플러그인
--default-character-set 기본 문자 집합을 지정
--defaults-extra-file 일반 옵션 파일 이외에 옵션 파일을 읽을
--defaults-file 지명 된 옵션 파일 만 읽을
--defaults-group-suffix 옵션 그룹의 접미사 값
--delayed-insert INSERT 문 대신 INSERT DELAYED 명령문을 내보낼
--delete-master-logs 마스터 복제 서버에서 덤프 작업 후에 바이너리 로그를 삭제
--disable-keys 각 테이블에 대해 키를 비활성화하는 문과 활성화 문에서 INSERT 문을 둘러싸
--dump-date --comments가 지정된 경우 덤프 날짜를 "Dump completed on"주석으로 포함
--dump-slave 슬레이브 마스터의 바이너리 로그 좌표를 나열하는 CHANGE MASTER 명령문을 포함
--events 덤프 된 데이터베이스에서 이벤트를 덤프
--extended-insert 여러 VALUES 목록이 포함 된 여러 행 INSERT 구문을 사용
--fields-enclosed-by 이 옵션은 --tab 옵션과 함께 사용되며 LOAD DATA INFILE의 해당 조항과 동일한 의미를 갖는다
--fields-escaped-by 이 옵션은 --tab 옵션과 함께 사용되며 LOAD DATA INFILE의 해당 조항과 동일한 의미를 갖는다
--fields-optionally-enclosed-by 이 옵션은 --tab 옵션과 함께 사용되며 LOAD DATA INFILE의 해당 조항과 동일한 의미를 갖는다
--fields-terminated-by 이 옵션은 --tab 옵션과 함께 사용되며 LOAD DATA INFILE의 해당 조항과 동일한 의미를 갖는다
--flush-logs 덤프를 시작하기 전에 MySQL 서버 로그 파일을 플래시
--flush-privileges mysql 데이터베이스 덤프 후에 FLUSH PRIVILEGES 명령문을
--help 도움말 메시지를 표시하고 종료
--hex-blob 바이너리 컬럼을 16 진법 법을 사용하여 덤프 (예를 들어, 'abc'는 0x616263)
--host 대상 호스트 (IP 주소 또는 호스트 이름)
--ignore-table 지정된 테이블을 덤프하지
--include-master-host-port --dump-slave 함께 생성 된 CHANGE MASTER 명령문에 MASTER_HOST / MASTER_PORT 옵션을 포함
--insert-ignore INSERT 문 대신 INSERT IGNORE 문을 내보낼
--lines-terminated-by 이 옵션은 --tab 옵션과 함께 사용되며 LOAD DATA INFILE의 해당 조항과 동일한 의미를 갖는다
--lock-all-tables 데이터베이스의 모든 테이블을 잠금
--lock-tables 테이블을 덤프하기 전에 모든 잠금
--log-error 경고 및 오류를 지명 된 파일에 추가
--login-path 로그인 경로 옵션을 .mylogin.cnf에서 읽기 5.6.6
--master-data 바이너리 로그 파일의 이름과 위치를 출력에 기록
--max_allowed_packet 서버 사이에 송수신되는 패킷의 최대 길이
--net_buffer_length TCP / IP 소켓 통신 버퍼 크기
--no-autocommit 덤프 된 테이블에 대해 INSERT 문을 SET autocommit = 0 문과 COMMIT 문 안에
--no-create-db 이 옵션은 CREATE DATABASE 문을 억제
--no-create-info 각 덤프 된 테이블을 다시 생성하는 CREATE TABLE 문을 기록하지
--no-data 테이블의 내용을 덤프하지
--no-defaults 옵션 파일을 읽지
--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 각 테이블의 행을 기본 키 또는 첫 번째 고유 인덱스로 정렬하여 덤프
--password 서버에 연결할 때 사용하는 비밀번호
--pipe Windows에서 명명 된 파이프를 사용하여 서버에 연결
--plugin-dir 플러그인이 설치되어있는 디렉토리
--port 연결에 사용하는 TCP / IP 포트 번호
--print-defaults 기본 출력
--protocol 사용하는 연결 프로토콜
--quick 서버에서 테이블에 대해 한 번에 한 줄씩 취득
--quote-names 식별자를 역 따옴표 문자로 둘러싸
--replace INSERT 문이 아닌 REPLACE 문을 내보낼
--result-file 지정된 파일에 출력
--routines 덤프 된 데이터베이스에서 스토어드 루틴 (프로 시저 및 함수)을 덤프
--secure-auth 오래된 (4.1.1 이전) 형식으로 서버에 암호를 전송하지 5.6.17
--set-charset SET NAMES default_character_set을 출력에 추가
--set-gtid-purged SET @@ GLOBAL.GTID_PURGED을 출력에 추가할지 여부 5.6.9
--shared-memory-base-name 공유 메모리 연결에 사용하는 공유 메모리의 이름
--single-transaction 이 옵션은 서버에서 데이터를 덤프하기 전에 BEGIN SQL 문을 발행
--skip-add-drop-table DROP TABLE 문을 CREATE TABLE 문 앞에 추가하지
--skip-add-locks 잠금을 추가하지
--skip-comments 덤프 파일에 주석을 추가하지
--skip-compact 보다 컴팩트 한 출력을 생성하지
--skip-disable-keys 키를 해제하지
--skip-extended-insert extended-insert를 해제
--skip-opt --opt에 설정된 옵션을 해제
--skip-quick 서버에서 테이블에 대해 한 번에 한 줄씩 취득하지
--skip-quote-names 식별자를 인용하지
--skip-set-charset SET NAMES 명령문을 억제
--skip-triggers 트리거를 덤프하지
--skip-tz-utc tz-utc를 해제
--socket 로컬 호스트에 연결하는 데 사용하는 Unix 소켓 파일
--ssl 연결에 SSL을 활성화
--ssl-ca 신뢰할 수있는 SSL CA의 목록이 들어있는 파일의 경로
--ssl-capath 신뢰할 수있는 SSL CA의 PEM 형식의 인증서를 포함하는 디렉토리의 경로
--ssl-cert PEM 형식의 X509 인증서가 포함 된 파일의 경로
--ssl-cipher SSL 암호화에 사용되는 허용 된 암호 목록
--ssl-crl 인증서 해지 목록을 포함하는 파일의 경로 5.6.3
--ssl-crlpath 인증서 해지 목록 파일을 포함하는 디렉토리 경로 5.6.3
--ssl-key PEM 형식의 X509 키를 포함하는 파일의 경로
--ssl-verify-server-cert 서버에 연결할 때 서버 인증서의 일반 이름 값을 호스트 이름에 대해 검증
--tab 탭으로 구분 된 데이터 파일을 생성
--tables --databases 옵션 또는 -B 옵션을 재정의
--triggers 덤프 된 각 테이블에 대한 트리거를 덤프하기
--tz-utc SET TIME_ZONE = '+ 00:00'를 덤프 파일에 추가
--user 서버에 연결할 때 사용하는 MySQL 사용자 이름
--verbose 중복 모드
--version 버전 정보를 출력하고 종료
--where 소정의 WHERE 조건에서 선택된 행만을 덤프
--xml XML 출력을 생성

연결 옵션

mysqldump 명령은 MySQL 서버에 로그인하여 정보를 추출합니다. 다음 옵션은 동일한 시스템 또는 원격 시스템에서 MySQL 서버에 연결하는 방법을 지정합니다.

  • --bind-address = ip_address

    여러 네트워크 인터페이스가있는 시스템에서이 옵션을 사용하여 MySQL 서버에 연결하는 데 사용하는 인터페이스를 선택합니다.

    이 옵션은 MySQL 5.6.1에서 지원되고 있습니다.

  • --compress , -C

    클라이언트와 서버가 압축을 지원하는 경우 그 사이에 송수신되는 정보를 압축합니다.

  • --default-auth = plugin

    사용하는 클라이언트 인증 플러그인. 섹션 6.3.7 "플러그 인증" 을 참조하십시오.

  • --host= host_name , -h host_name

    주어진 호스트의 MySQL 서버에서 데이터를 덤프합니다. 기본 호스트는 localhost 입니다.

  • --login-path = name

    지명 된 로그인 경로에서 .mylogin.cnf 로그인 파일의 옵션을 읽습니다. "로그인 경로"는 host , user 및 password 라는 제한된 옵션 집합 만 허용 옵션 그룹입니다. 로그인 경로는 서버 호스트 및 서버에서 인증을위한 인증 정보를 나타내는 값의 집합이라고 생각합니다. 로그인 경로 파일을 작성하려면 mysql_config_editor 유틸리티를 사용합니다. 섹션 4.6.6 "mysql_config_editor - MySQL 구성 유틸리티" 를 참조하십시오. 이 옵션은 MySQL 5.6.6에서 추가되었습니다.

  • --password[= password ] , -p[ password ]

    서버에 연결할 때 사용하는 암호입니다. 짧은 옵션 형식 ( -p )을 사용하는 경우, 옵션과 패스워드 사이에 스페이스를 가질 수 없습니다. 명령 행에서 --password 옵션 또는 -p 옵션 뒤에 password 의 값을 지정하지 않으면, mysqldump는 그것을 요구합니다.

    명령 행에서 암호 지정은 안전하지 않다고 생각한다. 섹션 6.1.2.1 "비밀번호 보안에 대한 최종 사용자 지침" 을 참조하십시오. 옵션 파일을 사용하면 명령 행에서 암호를 지정하는 것을 방지 할 수 있습니다.

  • --pipe , -W

    Windows에서 명명 된 파이프를 사용하여 서버에 연결합니다. 이 옵션은 서버가 명명 된 파이프 연결을 지원하는 경우에만 적용됩니다.

  • --plugin-dir = path

    플러그인을 검색하는 디렉토리. --default-auth 옵션을 사용하여 인증 플러그인을 지정했지만, mysqldump이 그것을 찾을 수없는 경우이 옵션을 지정해야 할 수도 있습니다. 섹션 6.3.7 "플러그 인증" 을 참조하십시오.

  • --port= port_num , -P port_num

    연결에 사용하는 TCP / IP 포트 번호.

  • --protocol = {TCP | SOCKET | PIPE | MEMORY}

    서버에 연결하는 데 사용하는 연결 프로토콜. 이 옵션은 다른 연결 매개 변수는 필요한 프로토콜 이외의 것이 일반적으로 사용되는 경우에 유용합니다. 허용되는 값의 자세한 내용은 섹션 4.2.2 "MySQL 서버에 연결" 을 참조하십시오.

  • --secure-auth

    이전 (4.1 이전) 형식으로 서버에 암호를 전송하지 않습니다. 그러면 새 암호 형식을 사용하는 서버 이외의 연결을 방지합니다. 이 옵션은 기본적으로 활성화됩니다. 해제하려면 --skip-secure-auth 를 사용합니다. 이 옵션은 MySQL 5.6.17에서 추가되었다.

    참고

    4.1 이전의 해시 방식을 사용하는 암호는 기본 암호 해시 방식을 사용하는 암호보다 안전하지 않기 때문에 사용하지 않도록하십시오. 4.1 이전 암호는 사용되지 않으며, 이러한 지원은 향후 MySQL 릴리스에서 제거 될 예정입니다. 계정 업그레이드 지침은 섹션 6.3.8.3 "4.1 이전 암호 해시 방식과 mysql_old_password 플러그인에서 마이그레이션" 을 참조하십시오.

  • --socket= path , -S path

    localhost 에 연결하는 데 사용되는 Unix 소켓 파일 또는 Windows에서 사용하는 명명 된 파이프의 이름.

  • --ssl *

    --ssl 로 시작하는 옵션은 SSL을 사용하여 서버에 연결하는 것을 허용할지 여부를 지정하고 SSL 키와 인증서를 검색 할 위치를 지정합니다. 섹션 6.3.10.4 "SSL 명령 옵션" 을 참조하십시오.

  • --user= user_name , -u user_name

    서버에 연결할 때 사용하는 MySQL 사용자 이름.

-- var_name = value 구문을 사용하면 다음의 변수도 설정할 수 있습니다.

  • max_allowed_pa​​cket

    클라이언트 / 서버 통신용 버퍼의 최대 크기. 기본은 24M 바이트 최대는 1G 바이트입니다.

  • net_buffer_length

    클라이언트 / 서버 통신용 버퍼의 초기 크기. 여러 행 INSERT 문 ( --extended-insert 옵션 또는 --opt 옵션을 사용하는 경우 등)를 작성하는 경우, mysqldump는 net_buffer_length 까지의 길이의 줄을 만듭니다. 이 변수를 증가시키는 경우, MySQL 서버의 net_buffer_length 변수가 최소한이 크기임을 확인하십시오.

옵션 파일 옵션

이 옵션은 어떤 옵션 파일을 읽거나 제어하는​​ 데 사용됩니다.

  • --defaults-extra-file = file_name

    이 옵션 파일은 글로벌 옵션 파일 다음에 읽을 수 있지만 (UNIX의 경우) 사용자 옵션 파일 전에 읽도록​​하십시오. 파일이 없거나 액세스 할 수없는 경우 오류가 발생합니다. file_name 은 전체 경로 이름이 ​​아닌 상대 경로 이름으로 지정된 경우 현재 디렉토리를 기준으로 해석됩니다.

  • --defaults-file = file_name

    지정된 옵션 파일 만 사용합니다. 파일이 없거나 액세스 할 수없는 경우 오류가 발생합니다. file_name 은 전체 경로 이름이 ​​아닌 상대 경로 이름으로 지정된 경우 현재 디렉토리를 기준으로 해석됩니다.

  • --defaults-group-suffix = str

    일반적인 옵션 그룹뿐만 아니라 일반 이름에 str 의 접미사가 붙은 그룹도 읽습니다. 예를 들어, mysqldump는 보통 [client] 그룹과 [mysqldump] 그룹을 읽습니다. --defaults-group-suffix=_other 옵션을 지정했을 경우, mysqldump는 [client_other] 그룹과 [mysqldump_other] 그룹도 읽습니다.

  • --no-defaults

    옵션 파일을 읽지 않습니다. 옵션 파일에서 알 수없는 옵션을 읽을로 인해 프로그램의 실행에 실패 할 경우 --no-defaults 를 사용하여 옵션을 읽는 것을 방지 할 수 있습니다.

    예외적으로 .mylogin.cnf 파일은 존재하는 경우는 모든 경우에 읽습니다. 이는 --no-defaults 가 사용 된 경우에도 명령 행보다 안전한 방법으로 암호를 지정할 수 있습니다. ( .mylogin.cnf 는 mysql_config_editor 유틸리티가 작성됩니다. 섹션 4.6.6 "mysql_config_editor - MySQL 구성 유틸리티" 를 참조하십시오).

  • --print-defaults

    프로그램 이름과 옵션 파일에서받는 모든 옵션을 출력합니다.

DDL 옵션

mysqldump의 사용 시나리오에는 새로운 MySQL 인스턴스 전체 (데이터베이스 테이블을 포함)의 설치 및 기존의 인스턴스 내부의 데이터를 기존의 데이터베이스 및 테이블로 대체 할 수 있습니다. 다음 옵션을 사용하면 덤프 파일에 다양한 DDL 문을 인코딩하여 덤프를 복원 할 때 무엇을 삭제하고 무엇을 설치할지 여부를 지정할 수 있습니다.

  • --add-drop-database

    DROP DATABASE 문을 각 CREATE DATABASE 문 앞에 추가합니다. 일반적으로이 옵션은 --all-databases 옵션 또는 --databases 옵션과 함께 사용됩니다. 이러한 옵션 중 하나를 지정하지 않으면 CREATE DATABASE 문이 기록되지 않기 때문입니다.

  • --add-drop-table

    DROP TABLE 문을 각 CREATE TABLE 문 앞에 추가합니다.

  • --add-drop-trigger

    DROP TRIGGER 문을 각 CREATE TRIGGER 문 앞에 추가합니다.

  • --all-tablespaces , -Y

    NDB 테이블이 사용하는 테이블 공간을 만드는 데 필요한 모든 SQL 문을 테이블 덤프에 추가합니다. 그렇지 않으면,이 정보는 mysqldump의 출력에 포함되지 않습니다. 이 옵션은 현재 MySQL Cluster 테이블에 대해서만 유효합니다.

  • --no-create-db , -n

    이 옵션은 --databases 옵션 또는 --all-databases 옵션이 지정되지 않으면 출력에 포함되는 CREATE DATABASE 문을 억제합니다.

  • --no-create-info , -t

    덤프 된 각 테이블을 다시 만드는 CREATE TABLE 문을 쓰지 않습니다.

    참고

    이 옵션은 로그 파일 그룹 또는 테이블 공간을 만드는 문을 mysqldump 출력에서 제외하지 않습니다. 그러나이를 위해서는 --no-tablespaces 옵션을 사용할 수 있습니다.

  • --no-tablespaces , -y

    이 옵션은 mysqldump의 출력의 모든 CREATE LOGFILE GROUP 문 및 CREATE TABLESPACE 문을 억제합니다.

  • --replace

    INSERT 문이 아닌 REPLACE 문을 씁니다.

디버깅 옵션

다음 옵션은 디버그 정보를 출력하거나 덤프 파일에 디버깅 정보를 인코딩하거나 또는 잠재적 인 문제에 관계없이 덤프 작업을 진행 시키기도합니다.

  • --allow-keywords

    키워드 인 컬럼 이름의 작성을 허가합니다. 이것은 각 컬럼 이름에 테이블 이름의 접두어를 이용하여 작동합니다.

  • --comments , -i

    프로그램 버전, 서버 버전, 그리고 호스트와 같은 추가적인 정보를 덤프 파일에 씁니다. 이 옵션은 기본적으로 활성화되어 있습니다. 이 추가 정보를 표시하지 않으려면 --skip-comments 를 사용하십시오.

  • --debug[= debug_options ] , -# [ debug_options ]

    디버그 로그를 기록합니다. 일반적인 debug_options 문자열은 d:t:o, file_name 입니다. 기본값은 d:t:o,/tmp/mysqldump.trace 입니다.

  • --debug-check

    프로그램 종료시 디버그 정보를 출력합니다.

  • --debug-info

    프로그램 종료시 디버그 정보와 메모리 및 CPU 사용량 통계를 출력합니다.

  • --dump-date

    --comments 옵션이 지정된 경우, mysqldump 덤프의 마지막에 다음 형식으로 코멘트를 생성합니다.

     - Dump completed on DATE
    

    그러나 다른 때 찍은 덤프 파일이 날짜 이외의 데이터가 완전히 같아도 날짜 위해 다르게 보일 수 있습니다. --dump-date 및 --skip-dump-date 는 댓글에 날짜를 추가할지 여부를 제어합니다. 기본값은 --dump-date (날짜를 댓글 포함)입니다. --skip-dump-date 는 날짜의 출력을 억제합니다.

  • --force , -f

    테이블 덤프 중에 SQL 오류가 발생해도 계속합니다.

    이 옵션 사용의 하나는 삭제 된 테이블을 뷰 정의가 참조하는 데 사용할 수있는 뷰를 감지 한 경우에도 mysqldump 실행을 계속하도록하는 것입니다. --force 를 지정하지 않으면, mysqldump는 오류 메시지와 함께 종료됩니다. --force 를 사용하면 mysqldump는 오류 메시지를 출력하지만 더 뷰 정의를 포함하는 SQL 댓글을 덤프에 쓰기, 실행을 계속합니다.

  • --log-error = file_name

    경고 및 오류를 지명 된 파일에 추가하여 기록합니다. 기본적으로 로깅을하지 않습니다.

  • --skip-comments

    --comments 옵션의 설명을 참조하십시오.

  • --verbose , -v

    중복 모드. 프로그램의 동작에 대해 더 많은 정보를 출력합니다.

도움말 옵션

다음 옵션은 mysqldump 명령 자신에 대한 정보를 표시합니다.

  • --help , -?

    도움말 메시지를 표시하고 종료합니다.

  • --version , -V

    버전 정보를 출력하고 종료합니다.

국제화 옵션

다음 옵션은 mysqldump 명령을 각 국어의 설정에서 문자 데이터를 표현하는 방법을 변경합니다.

  • --character-sets-dir = path

    문자 세트가 설치되어있는 디렉토리. 섹션 10.5 "문자 세트 구성" 을 참조하십시오.

  • --default-character-set = charset_name

    charset_name 를 디폴트 문자 세트로 사용합니다. 섹션 10.5 "문자 세트 구성" 을 참조하십시오. 캐릭터 세트가 지정되어 있지 않은 경우, mysqldump은 utf8 을 사용합니다.

  • --no-set-names , -N

    --set-charset 설정을 해제합니다. --skip-set-charset 을 지정하는 것과 마찬가지입니다.

  • --set-charset

    출력에 SET NAMES default_character_set 을 추가합니다. 이 옵션은 기본적으로 활성화되어 있습니다. SET NAMES 명령문을 무시에는 --skip-set-charset 를 사용하십시오.

복제 옵션

mysqldump 명령은 복제 구성에서 빈 인스턴스 또는 데이터를 포함하는 인스턴스를 슬레이브 서버로 만드는 데 주로 사용됩니다. 다음 옵션은 복제 마스터 서버와 슬레이브 서버에서 데이터 덤프 및 복원에 적용됩니다.

  • --apply-slave-statements

    --dump-slave 옵션으로 생성 된 슬레이브 덤프에서 STOP SLAVE 문을 CHANGE MASTER TO 문 앞에 START SLAVE 문을 출력 끝에 각각 추가합니다.

  • --delete-master-logs

    마스터 복제 서버에서 덤프 작업을 실행 한 후 서버에 PURGE BINARY LOGS 문을 전송함으로써 바이너리 로그를 삭제합니다. 이 옵션은 자동으로 --master-data 를 활성화합니다.

  • --dump-slave [= value ]

    이 옵션은 덤프 된 서버와 동일한 마스터를 가진 슬레이브로 다른 서버를 설치하는 데 사용할 수있는 덤프 파일을 생성하기 위해 리플리케이션 슬레이브 서버를 덤프하기 위해 사용하는 것을 제외하고 --master-data 과 같습니다. 이렇게하면 덤프 된 슬레이브 마스터의 바이너리 로그 좌표 (파일 이름과 파일 위치)를 나타내는 CHANGE MASTER TO 문이 덤프에 추가됩니다. 이들은 슬레이브가 복제를 시작하는 마스터 서버의 좌표입니다.

    --dump-slave 을 사용하면 좌표는 --master-data 옵션처럼 덤프 된 서버의 것이 아니라 사용되는 마스터의 것입니다. 또한이 옵션을 지정하면 --master-data 옵션이 사용되는 경우는 무시하고 사실상 무시되게됩니다.

    옵션 값은 --master-data 와 마찬가지로 처리됩니다 (값을 설정하지 않거나 1을 설정하면 CHANGE MASTER TO 문이 덤프에 기록되고 2로 설정하면 문은 기록되지만 SQL 주석으로 처리합니다 ) 다른 옵션을 활성화하거나 비활성화 할 점 및 잠금 처리에서 --master-data 와 같은 효과가 있습니다.

    이 옵션을 사용하면 mysqldump 덤프 전에 슬레이브 SQL 쓰레드를 종료하고 덤프 후에 다시 시작합니다.

    --dump-slave 함께 --apply-slave-statements 옵션 및 --include-master-host-port 옵션도 사용할 수 있습니다.

  • --include-master-host-port

    --dump-slave 을 사용하여 생성 된 슬레이브 덤프의 CHANGE MASTER TO 문 슬레이브 마스터의 호스트 이름과 TCP / IP 포트 번호 MASTER_HOST 옵션 및 MASTER_PORT 옵션을 추가합니다.

  • --master-data [= value ]

    마스터 복제 서버를 덤프하여 다른 서버를 마스터 슬레이브로 설정하는 데 사용할 수있는 덤프 파일을 생성하는 경우에이 옵션을 사용합니다. 이렇게하면 덤프 된 서버의 바이너리 로그 좌표 (파일 이름과 파일 위치)를 나타내는 CHANGE MASTER TO 문이 덤프에 추가됩니다. 이들은 덤프 파일을 슬레이브에로드 한 후에 슬레이브가 복제를 시작하는 마스터 서버의 좌표입니다.

    옵션 값이 2의 경우, CHANGE MASTER TO 문은 SQL 주석으로 기록되므로 정보 제공의 의미 밖에없고, 덤프 파일을 다시로드 될 때 아무런 효과도 없습니다. 옵션 값이 1이면 문을 주석으로 쓰여지지 않고 덤프 파일을 다시로드 될 때 실행됩니다. 옵션 값이 지정되지 않은 경우 기본값은 1입니다.

    이 옵션은 RELOAD 권한이 필요하고 바이너리 로그가 활성화되어 있지 않으면 안됩니다.

    --master-data 옵션은 자동으로 --lock-tables 를 해제합니다. 또한 --single-transaction 도 지정되어 있지 않은 경우는 --lock-all-tables 를 선택합니다. 이 경우 덤프의 맨 앞쪽 몇 시간 만 글로벌 읽기 잠금을 획득합니다 ( --single-transaction 설명을 참조하십시오). 어떤 경우에도 로그에 대한 조치는 모든 덤프와 동시에 발생합니다.

    --dump-slave 옵션을 사용하여 마스터 기존의 슬레이브를 덤프하여 슬레이브를 설정할 수 있습니다. --master-data 는 이에 따라 재정의 된 두 옵션이 사용 된 경우에는 무시됩니다.

    MySQL 5.6.4 이전에서는 복제 로그 테이블의 덤프에는이 옵션이 필요했습니다 ( 섹션 17.2.2 "복제 릴레이 및 상태 로그" 를 참조하십시오).

  • --set-gtid-purged = value

    이 옵션을 사용하면 SET @@global.gtid_purged 문을 출력에 추가할지 여부를 지정하여 덤프 파일에 기록되는 글로벌 트랜잭션 ID (GTID) 정보를 제어 할 수 있습니다.

    다음 표는 허용되는 옵션 값을 보여줍니다. 기본값은 AUTO 입니다.

    값 의미
    OFF 출력에 SET 문을 추가하지 않습니다.
    ON 출력에 SET 문을 추가합니다. 서버에서 GTID가 활성화되어 있지 않으면 오류가 발생합니다.
    AUTO 서버에서 GTID이 활성화되어있는 경우 출력에 SET 문을 추가합니다.

    이 옵션은 MySQL 5.6.9에서 추가되었습니다.

형식 옵션

다음 옵션은 덤프 파일 또는 전체 덤프 파일에서 특정 데이터를 제공하는 방법을 지정합니다. 또한 특정 항목에 대한 내용을 덤프 파일에 기록할지 여부를 제어합니다.

  • --compact

    보다 컴팩트 한 출력을 생성합니다. 이 옵션은 --skip-add-drop-table , --skip-add-locks , --skip-comments , --skip-disable-keys 및 --skip-set-charset 옵션을 사용합니다.

  • --compatible = name

    이전 MySQL 서버 나 다른 데이터베이스 시스템과의 호환성이 더 높은 출력을 생성합니다. name 의 값은 ansi , mysql323 , mysql40 , postgresql , oracle , mssql , db2 , maxdb , no_key_options , no_table_options 또는 no_field_options 입니다. 여러 값을 사용하는 경우 쉼표로 구분합니다. 이 값은 서버 SQL 모드 설정에 대한 해당 옵션과 동일한 의미를 가지고 있습니다. 섹션 5.1.7 "서버 SQL 모드" 를 참조하십시오.

    이 옵션은 다른 서버와의 호환성을 보장 할 수는 없습니다. 현재 제공되는 덤프 출력의 호환성을 향상시키기위한 SQL 모드 값을 사용하면됩니다. 예를 들어, --compatible=oracle 데이터 형식을 Oracle 형에 매핑하거나 Oracle 댓글 구문을 사용하거나하지 않습니다.

    이 옵션은 버전 4.1.0의 서버가 필요합니다. 그것보다 오래된 서버에서는 아무것도 실시하지 않습니다.

  • --complete-insert , -c

    컬럼 명을 포함한 전체 INSERT 문을 사용합니다.

  • --create-options

    MySQL 고유의 테이블 옵션을 CREATE TABLE 문에 포함됩니다.

  • --fields-terminated-by=... , --fields-enclosed-by=... , --fields-optionally-enclosed-by=... , --fields-escaped-by = ...

    이 옵션은 --tab 옵션과 함께 사용되며 LOAD DATA INFILE 의 대응하는 FIELDS 절과 같은 의미를가집니다. 섹션 13.2.6 "LOAD DATA INFILE 구문" 을 참조하십시오.

  • --hex-blob

    16 진수를 사용하여 바이너리 컬럼을 덤프합니다 (예를 들어, 'abc' 는 0x616263 입니다). 영향을받는 데이터 형은 BINARY 형 VARBINARY 형, BLOB 형 및 BIT 입니다.

  • --lines-terminated-by = ...

    이 옵션은 --tab 함께 사용되며 LOAD DATA INFILE 의 대응하는 LINES 절과 같은 의미를가집니다. 섹션 13.2.6 "LOAD DATA INFILE 구문" 을 참조하십시오.

  • --quote-names , -Q

    식별자 (데이터베이스, 테이블 및 컬럼 이름) " ` "문자로 묶습니다. ANSI_QUOTES SQL 모드가 활성화되면 식별자는 " " "문자로 둘러싸여 있습니다. 이 옵션은 기본적으로 활성화되어 있습니다. --skip-quote-names 으로 해제 할 수 있지만,이 옵션은 --compatible 과 같은 --quote-names 을 활성화 할 수있는 옵션 뒤에 지정하도록하십시오.

  • --result-file= file_name , -r file_name

    지정된 파일에 출력합니다. 이 옵션은 Windows에서 개행 문자 " \n "이 복귀 / 개행 시퀀스" \r\n '로 변환되는 것을 방지하기 위해 사용합니다. 덤프를 생성하는 동안 오류가 발생해도 결과 파일이 생성 된 이전 내용은 덮어 씁니다.

  • --tab= path , -T path

    탭으로 구분 된 텍스트 데이터 파일을 생성합니다. mysqldump는 각 덤프 테이블에 대해 테이블을 만드는 CREATE TABLE 문을 포함 tbl_name .sql 파일을 만들고 서버는 데이터가 들어있는 tbl_name .txt 파일에 기록합니다. 옵션 값은 파일을 작성하는 디렉토리입니다.

    참고

    이 옵션은 mysqldump가 mysqld 서버와 동일한 시스템에서 실행되는 경우에만 사용하도록하십시오. 사용자는 FILE 권한을 가지고 있어야 서버는 지정한 디렉토리에 파일을 쓸 권한이 있지 않으면 안됩니다.

    기본적으로 .txt 데이터 파일은 컬럼 값 사이에 탭 문자, 각 행의 끝에 줄 바꿈을 사용하는 형식입니다. 이 형식은 --fields- xxx 옵션 및 --lines-terminated-by 옵션을 사용하여 명시 적으로 지정할 수 있습니다.

    컬럼 값은 --default-character-set 옵션에서 지정된 문자 세트로 변환됩니다.

  • --tz-utc

    이 옵션은 다른 시간대의 서버간에 TIMESTAMP 컬럼을 덤프하고 다시로드 할 수 있습니다. mysqldump 는 그 연결 시간대를 UTC로 설정하고 SET TIME_ZONE = '+ 00:00' 를 덤프 파일에 추가합니다. 이 옵션을 사용하지 않으면 TIMESTAMP 컬럼은 덤프 원본 및 새로 고침 대상 서버의 로컬 타임 존으로 덤프 및 리로드가 실행되어 서버가 다른 시간대에있는 경우, 값이 변경됩니다. --tz-utc 는 서머 타임에 의한 변경으로부터 보호합니다. --tz-utc 는 디폴트로 유효합니다. 해제하려면 --skip-tz-utc 를 사용합니다.

  • --xml , -X

    덤프 및 정형식 XML을 내 보냅니다.

    NULL ' NULL ' 및 빈 값 :이 옵션으로 생성 된 출력은 column_name 라는 컬럼에 대해 NULL 값 빈 문자열 및 문자열 값 'NULL' 은 다음과 같이 서로 구분 합니다.

    값 : XML 표현 :
    NULL ( 알 수없는 값 )

    <field name = " column_name "xsi : nil ="true "/>

    '' ( 빈 문자열 )

    <field name = " column_name "> </ field>

    'NULL' ( 문자열 값 )

    <field name = " column_name "> NULL </ field>

    mysql 클라이언트를 --xml 옵션을 사용하여 실행 한 경우의 출력도 상기의 규칙에 따릅니다. ( 섹션 4.5.1.1 "mysql 옵션" 을 참조하십시오.)

    mysqldump 에서 XML 출력은 다음과 같이 XML 네임 스페이스가 포함됩니다.

    shell> 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"
    Collat​​ion = "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"
    Collat​​ion = "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>
    

    MySQL 5.6.5 이전 버전에서는이 옵션을 사용하면 --routines 옵션이 제대로 작동하지 않았습니다. 즉, 스토어드 루틴, 트리거 및 이벤트는 XML 형식으로 덤프 할 수 없습니다. (Bug # 11760384, Bug # 52792)

필터링 옵션

다음 옵션은 어떤 종류의 스키마 객체가 덤프 파일에 기록되는지를 트리거 또는 이벤트 등의 카테고리로 제어하거나 예를 들어 덤프 데이터베이스 및 테이블을 선택하고 이름에 의해 제어하거나 또는 WHERE 어구를 사용하여 테이블 데이터에서 행을 필터링하고 제어 할 수 있습니다.

  • --all-databases , -A

    모든 데이터베이스의 모든 테이블을 덤프합니다. 이것은 명령 행에서 --databases 옵션을 사용하여 모든 데이터베이스 이름을 지정하는 것과 같습니다.

    MySQL 5.6.4 이전 버전에서는이 옵션은 slave_master_info 테이블 및 slave_relay_log_info 테이블 ( 섹션 17.2.2 "복제 릴레이 및 상태 로그" 를 참조하십시오)는 포함되지 않았습니다.

  • --databases , -B

    여러 데이터베이스를 덤프합니다. 일반적으로 mysqldump 명령 행의 첫 번째 이름 인수를 데이터베이스 이름으로 연속 이름을 테이블 이름으로 처리합니다. 이 옵션을 사용하면 이름 인수를 모두 데이터베이스 이름으로 처리합니다.출력에는 각 새 데이터베이스 전에 CREATE DATABASE 문 및 USE 문이 포함됩니다.

  • --events , -E

    덤프 된 데이터베이스의 이벤트 스케줄러 이벤트를 출력에 포함됩니다.

  • --ignore-table = db_name.tbl_name

    지정된 테이블을 덤프하지 않습니다. 이것은 데이터베이스와 테이블 이름을 모두 지정해야합니다. 여러 테이블을 무시하려면이 옵션을 여러 번 사용하십시오. 이 옵션을 사용하여 뷰를 무시할 수 있습니다.

  • --no-data , -d

    테이블의 행 정보를 쓰지 않습니다 (즉, 테이블의 내용을 덤프하지 않습니다). 이것은 테이블의 CREATE TABLE 문만을 덤프하는 경우에 유용합니다 (예를 들어, 덤프 파일을로드하여 테이블의 빈 복사본을 만드는 경우 등).

  • --routines , -R

    덤프 된 데이터베이스의 스토어드 루틴 (프로 시저 및 함수)을 출력에 포함됩니다. 이 옵션을 사용하려면 mysql.proc 테이블에 대한 SELECT 권한이 필요합니다. --routines 을 사용하여 생성 된 출력 루틴을 다시 작성하기 위해 CREATE PROCEDURE 문 및 CREATE FUNCTION 문을 포함하고 있습니다. 그러나이 문은 루틴의 작성 및 수정 타임 스탬프 등의 속성을 포함하지 않습니다. 즉, 루틴이 리로드 될 때, 리로드 시간과 동일한 타임 스탬프에서 생성됩니다.

    루틴을 원래의 타임 스탬프 속성으로 다시 작성해야하는 경우는 --routines 를 사용하지 마십시오. 대신 mysql 데이터베이스 적절한 권한을 가지고있는 MySQL 계정을 사용하여 mysql.proc 테이블의 내용을 직접 덤프하고 다시로드하십시오.

    MySQL 5.6.5 이전 버전에서는이 옵션은 --xml 옵션과 함께 사용했을 경우에는 아무런 효과도 없습니다. (Bug # 11760384, Bug # 52792)

  • --tables

    --databases 옵션 또는 -B 옵션을 재정의합니다. mysqldump 는이 옵션 다음에 나오는 이름의 인수를 모두 테이블 이름으로 간주합니다.

  • --triggers

    덤프되는 각 테이블의 트리거를 출력에 포함됩니다. 이 옵션은 기본적으로 활성화됩니다. --skip-triggers 를 사용하여 비활성화합니다.

  • --where = ' where_condition ' , -w ' where_condition '

    지정된 WHERE 조건에서 선택되는 행만을 덤프합니다. 조건이 공백이나 사용자 명령 인터프리터에게 특별한 다른 문자가 포함 된 경우 조건을 따옴표로 묶어야합니다.

    예 :

    --where = "user = 'jimf'"
    -w "userid> 1"
    -w "userid <1"
    

성능 옵션

다음 옵션은 특히 복원 작업의 성능에 가장 중요합니다. 대규모 데이터 세트에서 복원 작업 (덤프 파일의 INSERT 문 처리)이 가장 시간이 많이 걸리는 부분입니다. 데이터를 신속하게 복원 할 긴급한 경우 사전 무대를 계획하고 성능을 테스트합니다. 시간 단위로 측정되는 복원 시간에 대해 InnoDB 전용 또는 혼합 데이터베이스에서 MySQL Enterprise Backup 또는 MyISAM 만의 데이터베이스에서 mysqlhotcopy 등 대체 백업 및 복원 솔루션이 바람직한 경우도 있습니다.

성능은 주로 덤프 조작에 대해 트랜잭션 옵션 에도 영향을받습니다.

  • --delayed-insert

    INSERT DELAYED 구문을 지원하는 비 트랜잭션 테이블은 일반 INSERT 문이 아니라 그 문을 사용합니다.

    MySQL 5.6.6에서는 DELAYED 삽입 비추천이기 때문에이 옵션은 이후 릴리스에서 제거됩니다.

  • --disable-keys , -K

    각 테이블에 대해 INSERT 문을 / *! 40000 ALTER TABLE tbl_name DISABLE KEYS * /; 문과 / *! 40000 ALTER TABLE tbl_name ENABLE KEYS * /; 문에 묶습니다. 그러면 모든 행이 삽입 된 후에 인덱스가 생성되기 때문에 덤프 파일의로드가 빨라집니다. 이 옵션은 MyISAM 테이블의 고유하지 않은 인덱스에만 효과가 있습니다.

  • --extended-insert , -e

    여러 VALUES 목록이 포함 된 다중 행 INSERT 구문을 사용합니다. 이렇게하면 덤프 파일의 크기가 작아지고 파일을 다시로드 할 때 삽입 속도가 빨라집니다.

  • --insert-ignore

    INSERT 문이 아니라 INSERT IGNORE 문을 써냅니다.

  • --opt

    이 옵션은 기본적으로 활성화되어, --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset 조합 의 줄임말입니다. 고속 덤프 조작이 가능하며 MySQL 서버에 신속하게 다시로드 할 덤프 파일을 생성합니다.

    --opt 옵션은 기본적으로 활성화되어 있기 때문에 몇 가지 기본 설정을 해제하는 경우에만이 반대 --skip-opt 를 지정합니다. --opt 에 영향을 받는다 옵션의 일부를 선택적으로 활성화 또는 비활성화하는 방법은 mysqldump 옵션 그룹 의 설명을 참조하십시오.

  • --quick , -q

    이 옵션은 대형 테이블의 덤프 유용합니다. 이것은 mysqldump 에 테이블의 모든 행 세트를 취득하여 내보내기 전에 메모리에 버퍼링하는 것이 아니라 서버에서 한 줄씩 줄을 취득하도록 강요합니다.

  • --skip-opt

    --opt 옵션의 설명을 참조하십시오.

트랜잭션 옵션

다음 옵션은 내 보낸 데이터의 신뢰성과 일관성을 위해 덤프 작업의 성능을 희생합니다.

  • --add-locks

    LOCK TABLES 문 및 UNLOCK TABLES 문에서 각 테이블 덤프를 묶습니다. 이렇게하면 덤프 파일을 다시로드 할 때 삽입의 속도가 향상됩니다. 섹션 8.2.2.1 "INSERT 문의 속도" 를 참조하십시오.

  • --flush-logs , -F

    덤프를 시작하기 전에 MySQL 서버 로그 파일을 플래시합니다. 이 옵션은 RELOAD 권한이 필요합니다. 이 옵션을 --all-databases 옵션과 함께 사용하면 로그는 덤프되는 데이터베이스마다 플래시됩니다. 예외는 --lock-all-tables , --master-data 또는 --single-transaction 을 사용하는 경우입니다. 이 경우, 로그는 모든 테이블이 잠긴 순간에 대응하고 한번만 플래시됩니다. 덤프 및 로그 플러시를 정확히 동시에 실행하려면 --flush-logs 를 --lock-all-tables , --master-data 또는 --single-transaction 함께 사용하도록하십시오.

  • --flush-privileges

    mysql 데이터베이스 덤프 후 덤프에 FLUSH PRIVILEGES 명령문을 추가합니다. 덤프 mysql 데이터베이스 및 mysql 데이터베이스의 데이터에 의존하는 다른 모든 데이터베이스가 포함되어있는 경우에는 올바른 복원을 위해 반드시이 옵션을 사용하도록하십시오.

  • --lock-all-tables , -x

    데이터베이스의 모든 테이블을 잠급니다. 이것은 전체 덤프주기에 대한 글로벌 읽기 잠금을 획득함으로써 달성됩니다. 이 옵션은 --single-transaction 및 --lock-tables 는 자동으로 꺼집니다.

  • --lock-tables , -l

    덤프되는 각 데이터베이스에 대해 덤프 모든 테이블을 덤프 전에 잠급니다. MyISAM 테이블의 경우, 병렬 삽입을 허용하는 테이블은 READ LOCAL 로 잠겨 있습니다. InnoDB 등의 트랜잭션 테이블의 경우, --single-transaction 은 테이블을 잠글 필요가 전혀 없기 때문에 --lock-tables 보다 훨씬 적합한 옵션입니다.

    --lock-tables 는 각 데이터베이스에 대해 개별적으로 테이블을 잠그므로이 옵션은 덤프 파일에있는 테이블이 데이터베이스간에 논리적으로 일관하고있는 것은 보증되지 않습니다. 다른 데이터베이스의 테이블은 완전히 다른 상태로 덤프 될 수 있습니다.

    --opt 등 일부 옵션은 --lock-tables 를 자동으로 설정합니다. 이를 무시하려면 --skip-lock-tables 옵션 목록의 마지막에 사용합니다.

  • --no-autocommit

    덤프 된 테이블에 대해 INSERT 문을 SET autocommit = 0 문과 COMMIT 문으로 묶습니다.

  • --order-by-primary

    각 테이블의 행을 기본 키 또는 첫 번째 고유 인덱스 (이 같은 인덱스가 존재하는 경우)으로 정렬하여 덤프합니다. 이것은 InnoDB 테이블에로드되는 MyISAM 테이블을 덤프 할 경우에 유용하지만, 덤프 작업에 걸리는 시간이 상당히 길어집니다.

  • --shared-memory-base-name = name

    Windows에서 공유 메모리를 사용하여 생성되는 로컬 서버에 연결 공유 메모리 이름. 기본값은 MYSQL 입니다. 공유 메모리 이름은 대소 문자를 구분합니다.

    공유 메모리 연결을 가능하게하려면 서버는 --shared-memory 옵션으로 시작해야합니다.

  • --single-transaction

    이 옵션은 데이터의 덤프 전에 트랜잭션 격리 모드를 REPEATABLE READ 로 설정하고 START TRANSACTION SQL 문을 서버로 전송합니다. 이것은 InnoDB 등의 트랜잭션 테이블의 경우에만 유용합니다. 이 경우 응용 프로그램을 차단하지 않고 START TRANSACTION 가 발행 된 시점의 데이터베이스의 일관된 상태를 덤프하기 때문입니다.

    이 옵션을 사용하면 일관된 상태로 덤프되는 것은 InnoDB 테이블 만한다는 것을 명심하십시오. 예를 들어,이 옵션을 사용할 때 덤프 된 MyISAM 테이블 또는 MEMORY 테이블은 상태가 변화 할 수 있습니다.

    --single-transaction 덤프를 처리 할 때 덤프 파일이 정당 (테이블 내용과 바이너리 로그 좌표가 정확)을 보장하기 위해 다른 연결에서 ALTER TABLE , CREATE TABLE , DROP TABLE , RENAME TABLE , TRUNCATE TABLE 문을 사용하지 않도록하십시오. 일관성 독해는 이러한 문에서 분리되어 있으므로 덤프 된 테이블에서 이들을 사용하면 mysqldump 에 의해 실행 된 테이블의 내용을 검색 할 SELECT 가 잘못된 내용을 검색하거나 실패 할 수 있습니다 .

    --single-transaction 옵션 및 --lock-tables 옵션은 상호 배타적입니다. 이것은 보류중인 트랜잭션이 LOCK TABLES 에 의해 암묵적으로 위탁하기 때문입니다.

    대형 테이블을 덤프하려면 --single-transaction 옵션을 --quick 옵션과 함께하십시오.

옵션 그룹

  • --opt 옵션은 빠른 덤프 작업을 수행하기 위해 협동하는 몇 가지 설정을 선택합니다. --opt 은 기본적으로 선택이기 때문에 이러한 설정은 기본적으로 켜져 있습니다. 따라서 --opt 를 지정할 수는 있다고해도 드물다. 대신, --skip-opt 를 사용하여 이러한 설정을 그룹으로 해제 해, 그 후 명령 행에서 관련 옵션을 지정하여 특정 설정을 다시 활성화 할 수 있습니다.

  • --compact 옵션은 옵션 문과 댓글이 출력에 나타날지 여부를 제어하는 몇 가지 설정을 해제합니다. 이 경우에도이 옵션에 특정 설정을 다시 활성화하려면 기타 옵션을 계속하거나 --skip-compact 형식을 사용하여 모든 설정을 선택 할 수 있습니다.

그룹 옵션의 일부를 선택적으로 효과를 활성화하거나 비활성화 할 경우 옵션은 앞에서 뒤로의 순서로 처리되기 때문에 순서가 중요합니다. 예를 들어, --disable-keys --lock-tables --skip-opt 는 의도 된 효과를 얻을 수 없습니다. --skip-opt 만의 경우와 동일합니다.

예

전체 데이터베이스 백업을 만들려면 :

shell> mysqldump db_name > backup-file.sql

덤프 파일을 서버에로드하려면 :

shell> MySQL db_name < backup-file.sql

덤프 파일을 다시로드하는 또 다른 방법 :

shell> mysql -e "source /path-to-backup/backup-file.sql " db_name

mysqldump 는 하나의 MySQL 서버에서 다른 서버로 데이터를 복사하여 데이터베이스를 채우는 데 매우 유용합니다.

shell> mysqldump --opt db_name | MySQL --host = remote_host -C db_name

여러 데이터베이스를 하나의 명령으로 덤프 할 수 있습니다.

shell> mysqldump --databases db_name1 [ db_name2 ...> my_databases.sql

모든 데이터베이스를 덤프하려면 --all-databases 옵션을 사용합니다.

shell> mysqldump --all-databases> all_databases.sql

InnoDB 테이블에 대해 mysqldump 는 온라인 백업을 만드는 방법을 제공합니다.

shell> mysqldump --all-databases --master-data --single-transaction> all_databases.sql

이 백업은 덤프의 처음으로 ( FLUSH TABLES WITH READ LOCK 을 사용하여) 모든 테이블에 대한 글로벌 읽기 잠금을 획득합니다. 이 락이 취득되면 즉시 바이너리 로그의 좌표를 읽어 잠금이 해제됩니다. FLUSH 문이 실행 된 때 긴 업데이트 명령문이 실행중인 경우, MySQL 서버는 그 문이 끝날 때까지 정지 될 수 있습니다. 그 후 덤프는 잠금이 없어 테이블의 읽기 및 쓰기를 방해하지 않습니다. MySQL 서버가 수신 update 문 (실행 시간의 점에서) 짧은 경우 업데이트의 수가 많아도 첫 번째 잠금 시간은 그다지 신경이 쓰이지 않을 것입니다.

시점 복구 (또는 "롤 포워드" 이것은 오래된 백업을 복원하고 백업 후 발생한 변경을 재현 할 필요가있는 경우)는 바이너리 로그를 순환 ( 섹션 5.2.4 "바이너리 로그" 를 참조)하거나 최소한 덤프가 대응하는 바이너리 로그 좌표를 알고 있으면 편리한 경우가 있습니다.

shell> mysqldump --all-databases --master-data = 2> all_databases.sql

또는 :

shell> mysqldump --all-databases --flush-logs --master-data = 2
              
> all_databases.sql 

--master-data 옵션 및 --single-transaction 옵션은 동시에 사용할 수 있습니다. 이것은 테이블이 InnoDB 스토리지 엔진을 사용하여 저장되어있는 경우, 시점 복구 전에 사용하는 데 적합한 온라인 백업하는 편리한 방법을 제공합니다.

백업 생성 자세한 내용은 7.2 절 "데이터베이스 백업 방법" 과 섹션 7.3 "백업 및 복구 전략의 예" 를 참조하십시오.

  • 몇 가지 기능을 제외하고 --opt 효과를 선택하려면 제외한 각 기능에 --skip 옵션을 선택합니다. 확장 삽입 및 메모리 버퍼링을 해제하려면 --opt --skip-extended-insert --skip-quick 을 사용합니다. ( --opt 은 기본적으로 선택이기 때문에 실제로는 --skip-extended-insert --skip-quick 충분합니다.)

  • 인덱스 비활성화 및 테이블 잠금을 제외한 모든 기능에 --opt 를 반전하려면 --skip-opt --disable-keys --lock-tables 를 사용합니다.

제약

mysqldump 는 기본적으로 INFORMATION_SCHEMA 데이터베이스 및 performance_schema 데이터베이스를 덤프하지 않습니다. 이 중 하나를 덤프하려면 명령 줄에서 명시 적으로 지정하고 --skip-lock-tables 옵션을 사용합니다. --databases 옵션으로 지정할 수 있습니다.

mysqldump 는 MySQL Cluster ndbinfo 정보 데이터베이스를 덤프하지 않습니다.

MySQL 5.6.6 이전에서는 mysqldump 는 mysql 데이터베이스 덤프로 general_log 테이블도 slow_query_log 테이블도 덤프하지 않습니다. 5.6.6 이상에서는 덤프에는 그 테이블을 다시 작성하기위한 문이 포함되어 있기 때문에 덤프 파일을 다시로드 한 후 그 테이블이 손실되지 않습니다. 로그 테이블의 내용은 덤프되지 않습니다.

권한이 부족하여 뷰의 백업에 문제가 발생할 경우 섹션 D.5 "뷰 제약" 의 해결 방법을 참조하십시오.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved