mysqldump로 백업하기

Scrapbook/개발관련 2008/05/15 11:25 Posted by 큰비

mysqldump -u<사용자 계정명> -p[사용자패스워드] [OPTIONS] database [tables]
mysqldump [OPTIONS] --all-databases [OPTIONS]


[OPTIONS]

-n 또는 --no_create_db

데이터베이스 구조 생성 쿼리를 만들지 않는다는 옵션

이 옵션은 --all-databases를 했을 경우에만 유효하다. 즉, 덤프를 실행할때 databases를 지정하면 이미 databases가 있으니 CREATE DATABASE 를 할 필요가 없으므로 동작을 안함.

그러므로 database를 지정했을 경우에는 쓸 필요 없는 옵션.


-t 또는 --no_create_info

테이블 구조 생성 쿼리를 만들지 않는다는 옵션.


--default-chareter-set
덤프받을시 지정하는 케릭터셋으로 연결하여 덤프 받는 옵션, 하지만 테이블의 언어셋을 변경하여 받아주지는않음.

ex) 분명히 euc_kr 데이터가 쌓여있는데 덤프를 받으면 깨지는경우

     -  이는 MySQL 서버가 다른언어셋으로 구성되어 있어 이중으로 인코딩되어
        한글이나 다른언어들이 깨지는 현상이 발생한다 .
 이경우는 다음고 같이 덤프 받는다.

 mysqldump --default-chareter-set=euckr -u user -p  dbname > dbname.sql


--skip-extended-insert

mysqldump를 실행하면 VALUES 뒤에 여러개의 데이터셋이 붙어 있는 다중신텍스 형태

   ex) insert into table_name(field1, field2) values(1,2),(3,4),(5,6)

로 나오는데, --skip-extended-insert 옵션을 주면 데이터셋 하나당 insert문 하나로

 ex) insert into table_name(field1,field2) values(1,2)

       insert into table_name(field1,field2) values(3,4)

       insert into table_name(field1,field2) values(5,6)

나오기 때문에  덤프뜬것을 넣을때 에러 찾기가 용의하다.


--allow-keywords
MySQL예약어와 동일한 필드명이 있을경우 복원시에 에러가 발생시
이옵션을 이용하여 덤프를 받으면 테이블명와 필드명에 ``해당 기호가 삽입되어 정상적으로 인식


--complet-insert -c
완전한 인서트문을 구성한다 .
 ex) insert into table_name(field1,field2) values(value1,value2)

버전이 달라  mysql디비가 인서트가안될경우에 유용
     - 메이져 버전이 다를경우 MySQL데이터베이스안의 user,db,hot등의 테이블 구조가 달라
       일반적으로 덤프를든경우  정상적으로 인서트되니않는다.
 이경우는 다음고 같이 덤프 받는다.

 mysqldump --complet-insert -u user -p  dbname > dbname.sql


--quick, -q
대용량 데이타베이스를 덤프뜰때 유용
한번에 한열씩 축출하며 쓰기전에 메로리에 버퍼링을 하록 하는옵션

--xml -x
XML형태로 덤프 받을시 이용


-r filename 또는 --result-file=filename

덤프뜬 결과를 파일로 저장.

mysqldupm -u user -p dbname  > dbname.sql  와  mysqldump -u user -p dbname -r dbname.sql 는 같은 결과이다.

[출처] mysqldump로 백업하기 |작성자 루든

ex) mysqldump -u testuser -p --databases testdb> testdb.sql

댓글을 달아 주세요