**mysqldump 옵션**
--comments,-i
프로그램버전,서버버전,호스트같은 추가적인 정보를 덤프파일에 기록한다 이옵션은 디폴트로 활성화된다
--skip-comments를 사용하면 디폴트 활성화를 없앨 수 있다
--compact
간략한 결과를 만들게한다 이옵션은 코맨트를 없애주며
(--skip-add-drop-table,--no-set-names,--skip-disable-keys,--skip-add-locks옵션을 활성회시킨다)
--databases,-B
여러개의 데이터베이스를 덤프한다 보통은 데이터베이스 테이블로 간주되지만 이옵션을 사용하면 모든 인수를 데이터베이스 이름으로 간주하게된다
--force,-f
테이블을 덤프하는동안 sql에러가 발생하더라도 계속진행
--single-transaction :
dump를 하나의 트랜잭션을 이용해서 실행함
(InnoDB 스토리지 엔진을 사용하는 테이블에 대해서는 Lock없이 일관된 덤프를 받을 수 있음).
자세한 내용은 아래 "일관된 데이터 덤프 받기" 참조
--flush-logs : dump를 시작하는 시점에 binary log를 rotation 시키도록 한다.
Binary log를 증분 백업용으로 사용하는 경우, 풀백업과 증분 백업의 구분을 명확히 할 수 있다.
--master-data :
이 옵션이 명시되면, dump 파일의 헤더 부분에 CHANGE MASTER TO 구문을 포함시키며,
이 구문에는 덤프 시작 시점의 Binary log 파일명과 위치 정보 및 호스트 정보를 포함하고 있다.
이 값을 1로 설정하면 CHANGE MASTER TO 구문이 실제 실행 가능한 형태로 포함되며,
2로 설정되면 SQL 코멘트 형태로 참조만 할 수 있도록 포함된다.
가끔 Binary log가 활성화되지 않은 서버에서 실행 시 에러를 유발하기도 하므로
반드시 먼저 테스트를 해볼 것을 권장한다.
--opt | --skip-opt :
opt 옵션은 여러 개의 옵션들을 묶어 놓은 별명과 같은 옵션이며
(--add-drop-table, --add-locks, --create-options, --disable-keys, --extended-insert,
--lock-tables, --quick, --set-charset) 옵션들을 포함한다.
때때로(create db, table등을 포함할지 말지 제어시) mysqldump의 옵션을 상세하게
제어하고자 할 경우에는 skip-opt 옵션으로 비활성화시킨 후, 필요한 것들만 직접 명시해주는 것이 좋다.
--quick :
일반적으로 mysqldump는 테이블의 데이터들을 모두 Client의 메모리에 모두 로딩한 후,
파일에 쓰기를 시작하게 되는데, 이 옵션이 활성화되면 Client의 메모리에 버퍼링하지 않고
바로 파일로 쓰거나 화면으로 출력하게 된다. 이 옵션은 opt 옵션에 포함되어서 자동으로 활성화되기 때문에,
(큰 테이블이 있는 경우) skip-opt를 사용하는 경우에는 quick 옵션을 별도로 명시해줘야 한다.
--extended-insert :
mysqldump는 테이블의 데이터를 INSERT 문장 형태로 출력하게 되는데,
이 옵션을 사용하면 확장 형태의 INSERT문장으로 데이터를 덤프하게 된다.
이런 형태의 덤프는 다시 로드하는 작업을 빠르게 해줄 수 있다.
(확장 형태의 INSERT 문장이라는 것은
"INSERT INTO tab VALUES ('1','2'),('2','3'),('3','4');"와 같은 형태의 INSERT 문장을 의미한다.)
--add-drop-database :
덤프 파일의 내용에 "DROP DATABASE ..." 명령을 포함하지 않도록 한다.
--add-drop-table :
덤프 파일의 내용에 "DROP TABLE ..." 명령을 포함하지 않도록 한다.
--no-create-db :
mysqldump 의 옵션에 --databases 또는 --all-databases 옵션이 명시되지 않으면,
기본적으로 "CREATE DATABASE ..." 명령이 포함되는데,
종종 이 명령이 필요치 않은 경우가 있을 수 있으며 이 때에는 이 옵션을 활성화 해주면 된다.
--no-create-info :
덤프 파일의 내용에 "CREATE TABLE ..." 명령을 포함하지 않도록 한다.
--create-options :
덤프 파일에 "CREATE TABLE ..." 명령이 출력되는 경우,
초기 테이블 생성시 사용했던 테이블 생성 옵션들을 모두 포함하도록 한다.
--no-data :
데이터는 덤프하지 않고 테이블의 구조만 덤프하도록 한다.
--hex-blob :
덤프 대상 테이블중에서 이진 값을 가지는 컬럼의 값들을 16진수 문자열로 출력한다.
--routines :
덤프시에 스토어드 프로시져와 함수를 출력하도록 한다.
--triggers :
덤프시에 트리거를 출력하도록 한다.
dump 대상 옵션
--all-databases :
이 옵션을 명시하면 현재 서버의 모든 데이터베이스를 덤프하게 된다.
이 옵션으로 덤프를 받게 되면 기본적으로 "USE <데이터베이스명>;" 명령이 덤프 내용에 포함된다.
--databases [database1] [database2] ... :
이 옵션을 명시하면 현재 서버에서 명시된 데이터베이스들을 덤프하게 된다.
이 옵션으로 덤프를 받게 되면 기본적으로 "USE <데이터베이스명>;" 명령이 덤프 내용에 포함된다.
[database1] :
별도의 옵션없이 mysqldump 명령의 마지막에 특정 데이터베이스명만을 명시하면
해당 데이터베이스의 내용만을 덤프하게 된다.
이 경우에는 "USE <데이터베이스명>;" 명령이 덤프 파일에 포함되지 않는다.
그래서 데이터베이스를 덤프 받아서 동일 데이터베이스에 다시 적재하고자 하는 경우
(덤프받은 파일을 동일 서버의 다른 데이터베이스명으로 적재하고자 하는 경우) "USE <데이터베이스명>;" 때문에
작업이 쉽지 않은데 이런 경우에는 이 옵션으로 덤프를 받으면
쉽게 동일 MySQL 서버에 다른 데이터베이스명으로 적재할 수 있다.
[database1] [table1] [table2] :
별도의 옵션없이 mysqldump 명령의 마지막에 여러개의 오브젝트명을 명시하면,
mysqldump는 첫번째 오브젝트는 데이터베이스명, 그 다음부터는 테이블명으로 인식하게 된다.
그래서 해당 데이터베이스에 있는 각 테이블들만을 덤프하게 된다.
'리눅스 > sql server' 카테고리의 다른 글
실사용 db 에서 mysql replication (0) | 2017.01.25 |
---|---|
[Mysql] mysql 기본명령어, 설정 (0) | 2017.01.17 |
[MYSQL]ERROR 1130 (HY000): Host ' ' is not allowed to connect to this MySQL server 에러 (0) | 2016.11.28 |
[mysql 4.0] mysql 4.0, mysql4.1 mysql5.0. 마이그레이션 (0) | 2016.11.22 |
[Mysql] MySQL Replication 설정 (0) | 2016.09.30 |