수색…


통사론

  • mysqldump -u [username] -p [password] [다른 옵션] db_name> dumpFileName.sql /// 단일 데이터베이스 백업
  • mysqldump -u [username] -p [password] [기타 옵션] db_name [tbl_name1 tbl_name2 tbl_name2 ...]> dumpFileName.sql /// 하나 이상의 테이블을 백업하려면
  • mysqldump -u [username] -p [password] [다른 옵션들] --databases db_name1 db_name2 db_name3 ...> dumpFileName.sql /// 하나 이상의 완전한 데이터베이스 백업하기
  • mysqldump -u [username] -p [password] [다른 옵션들] --all-databases> dumpFileName.sql /// 전체 MySQL 서버 백업하기

매개 변수

선택권 효과
- # 서버 로그인 옵션
-h ( --host ) 연결할 호스트 (IP 주소 또는 호스트 이름)입니다. 기본값은 localhost ( 127.0.0.1 )입니다. 예 : -h localhost
-u ( --user ) MySQL 사용자
-p ( --password ) MySQL 암호. 중요 : -p 사용할 때 옵션과 암호 사이에 공백이 없어야합니다. 예 : -pMyPassword
- # 덤프 옵션
--add-drop-database CREATE DATABASE 문 앞에 DROP DATABASE 문을 추가하십시오. 서버의 데이터베이스를 대체하려는 경우 유용합니다.
--add-drop-table CREATE TABLE 문 앞에 DROP TABLE 문을 추가하십시오. 서버의 테이블을 바꾸려면 유용합니다.
--no-create-db 덤프에서 CREATE DATABASE 문을 억제하십시오. 이는 덤프하는 데이터베이스가 덤프를로드 할 서버에 이미 존재할 때 유용합니다.
-t ( --no-create-info ) 덤프의 모든 CREATE TABLE 문을 억제하십시오. 이는 테이블의 데이터 만 덤프하고 덤프 파일을 사용하여 다른 데이터베이스 / 서버의 동일한 테이블을 채울 때 유용합니다.
-d ( --no-data ) 테이블 정보를 쓰지 마십시오. 이렇게하면 CREATE TABLE 문만 덤프됩니다. "템플릿"데이터베이스를 만드는 데 유용합니다.
-R (- --routines ) 덤프에 저장 프로 시저 / 함수를 포함시킵니다.
-K ( --disable-keys ) 데이터를 삽입하기 전에 각 테이블의 키를 비활성화하고 데이터가 삽입 된 후에 키를 활성화하십시오. 이렇게하면 고유하지 않은 인덱스가있는 MyISAM 테이블에서만 삽입 속도가 빨라집니다.

비고

mysqldump 연산의 출력은 생성에 사용 된 MySQL 유틸리티 버전과 호환되는 순차적 SQL 문을 포함하는 가볍게 주석 처리 된 파일입니다 (이전 버전과의 호환성에주의를 기울 였지만 이후 버전에 대해서는 보장하지 않음). 따라서 mysqldump 데이터베이스의 복원은 이러한 명령문의 실행을 포함합니다. 일반적으로이 파일

  • DROP 의 첫 번째 지정된 테이블 또는 뷰
  • 해당 테이블이나 뷰를 CREATE 합니다.
  • 데이터가 덤프 된 테이블의 경우 (즉, --no-data 옵션이없는 경우)
    • LOCK 테이블
    • 하나의 명령문에서 원본 테이블의 모든 행을 INSERT 합니다.
  • UNLOCK TABLES
  • 다른 모든 테이블과 뷰에 대해 위의 내용을 반복합니다.
  • DROP 의 첫 번째 루틴 포함
  • CREATE 들에게 그 루틴을
  • 다른 모든 루틴에 대해 동일하게 반복합니다.

각 테이블에 대해 CREATE 이전에 DROP 존재한다는 것은 스키마가 존재하는지 여부에 관계없이 스키마가 비어 있는지 여부에 관계없이 복원을 위해 mysqldump 파일을 사용하여 데이터가 채워지거나 덮어 쓰게됨을 의미합니다.

데이터베이스 또는 테이블의 백업 만들기

전체 데이터베이스의 스냅 샷을 만듭니다.

mysqldump [options] db_name > filename.sql

여러 데이터베이스의 스냅 샷을 만듭니다.

mysqldump [options] --databases db_name1 db_name2 ... > filename.sql
mysqldump [options] --all-databases > filename.sql

하나 이상의 테이블에 대한 스냅 샷을 만듭니다.

mysqldump [options] db_name table_name... > filename.sql

하나 이상의 테이블을 제외 하고 스냅 샷을 만듭니다.

mysqldump [options] db_name --ignore-table=tbl1 --ignore-table=tbl2 ... > filename.sql

파일 확장명 .sql 은 완전히 스타일의 문제입니다. 모든 확장 기능이 작동합니다.

사용자 이름 및 암호 지정

> mysqldump -u username -p [other options]
Enter password:

명령 줄에서 암호를 지정해야하는 경우 (예 : 스크립트에서) 공백 없이 -p 옵션 뒤에 암호를 추가 할 수 있습니다.

> mysqldump -u username -ppassword [other options]

암호에 공백이나 특수 문자가 포함되어 있으면 쉘 / 시스템에 따라 이스케이프를 사용해야합니다.

선택적으로 확장 형식은 다음과 같습니다.

> mysqldump --user=username --password=password [other options]

(보안 문제로 인해 명령 줄에서 암호를 지정하는 것이 권장되지 않습니다.)

데이터베이스 또는 테이블의 백업 복원

mysql [options] db_name < filename.sql

참고 사항 :

  • db_name 은 기존 데이터베이스 여야합니다.
  • 인증 된 사용자는 filename.sql 내의 모든 명령을 실행할 수있는 충분한 권한이 있습니다.
  • 파일 확장명 .sql 은 완전히 스타일의 문제입니다. 모든 확장 기능이 작동합니다.
  • 덤프 할 테이블 이름을 지정할 수있는 경우에도로드 할 테이블 이름을 지정할 수 없습니다. 이것은 filename.sql 내에서 수행되어야합니다.

MySQL 명령 행 도구 에서 source 명령을 사용하여 다른 스크립트를 복원하거나 실행할 수 있습니다.

source filename.sql

또는

\. filename.sql

압축 된 원격 서버의 mysqldump

빠른 전송을 위해 유선을 통한 압축을 사용하려면 --compress 옵션을 mysqldump 전달하십시오. 예:

mysqldump -h db.example.com -u username -p --compress dbname > dbname.sql

중요 : 소스 db를 잠그지 않으려면 --lock-tables=false 도 포함시켜야합니다. 그러나 당신은 그런 식으로 내부적으로 일관된 db 이미지를 얻지 못할 수도 있습니다.

또한 압축 된 파일을 저장하려면 gzip 파이프 할 수 있습니다.

mysqldump -h db.example.com -u username -p --compress dbname | gzip --stdout > dbname.sql.gz

압축을 풀지 않고 gzipped mysqldump 파일을 복원한다.

gunzip -c dbname.sql.gz | mysql dbname -u username -p

주 : -c 는 stdout에 출력을 쓰는 것을 의미합니다.

압축으로 Amazon S3에 직접 백업

대규모 MySql 설치의 전체 백업을 만들고 충분한 로컬 스토리지가없는 경우 Amazon S3 버킷에 직접 덤프하고 압축 할 수 있습니다. 또한 명령의 일부로 DB 암호를 사용하지 않고이 작업을 수행하는 것이 좋습니다.

mysqldump -u root -p --host=localhost --opt --skip-lock-tables --single-transaction \
        --verbose --hex-blob --routines --triggers --all-databases |
    gzip -9 | s3cmd put - s3://s3-bucket/db-server-name.sql.gz

암호를 묻는 메시지가 나타나고 그 후에 백업이 시작됩니다.

한 MySQL 서버에서 다른 MySQL 서버로 데이터 전송

한 서버에서 다른 서버로 데이터베이스를 복사해야하는 경우 두 가지 옵션이 있습니다.

옵션 1:

  1. 원본 서버에 덤프 파일 저장
  2. 대상 서버로 덤프 파일 복사
  3. 대상 서버에 덤프 파일로드

원본 서버에서

mysqldump [options] > dump.sql

대상 서버에서 덤프 파일을 복사하고 다음을 실행합니다.

mysql [options] < dump.sql

옵션 2 :

대상 서버가 호스트 서버에 연결할 수 있으면 파이프 라인을 사용하여 한 서버에서 다른 서버로 데이터베이스를 복사 할 수 있습니다.

대상 서버에서

mysqldump [options to connect to the source server] | mysql [options]

마찬가지로 원본 서버에서 스크립트를 실행하여 대상으로 푸시 할 수 있습니다. 두 경우 모두 옵션 1보다 훨씬 빠르다.

저장 프로 시저 및 함수가있는 데이터베이스 백업

기본적으로 저장 프로 시저와 함수에 의해 생성되거나 mysqldump 에 의해 생성되지 않으면 --routines (또는 -R ) 매개 변수를 추가해야합니다 :

mysqldump -u username -p -R db_name > dump.sql

--routines 사용할 때 생성과 변경 타임 스탬프는 유지되지 않고 대신 mysql.proc 의 내용을 덤프하고 다시로드해야합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow