1. $ mysqldump [Option] database [table “” not found /]
> ???.dump
2. $ mysqldump [Option] --databases db1 [db2 db3 … ] > ???.dump
3. $ mysqldump [Option] --all-databases > ???.dump

설명 => 1번은 하나의 데이터베이스와 그 안의 테이블들을 덤프 시키는 명령입니다.
테이블이름을 생략하면 모든 테이블이 덤프 됩니다.
2번은 여러 개의 데이터베이스 전체를 한 번에 덤프 시키는 명령입니다.
3번은 모든 데이터베이스를 덤프 시키는 명령입니다.

[Option] 설명
--quick : C API의 mysql_use_result()함수를 사용하므로 속도가 빠르다.
--add-drop-table : 덤프 결과에서 create table 앞에 drop table 절을 추가합니다.
--add-locks : 덤프하기 전에 LOCK table을 이용하여 테이블을 잠그고 덤프후 UNLOCK table을 합니다.
--extended-insert : insert 문 하나에서 모든 레코드를 삽입하는 insert 문을 생성합니다.
--opt : 위에 나온 옵션을 동시에 사용한 것과 같은 결과를 가져옵니다.
--no-data(-d) : 테이블의 스키마만 덤프합니다.
--no-create-info(-t) : create table을 출력하지 않고 데이터만 덤프합니다.

개인적으로는 –opt 옵션을 주로 사용합니다. 한가지 예를 보도록 하겠습니다.

[그림2]

mysqldump –opt support test > /PATH/support_test.dump
이 구문은 support 데이터베이스 안에 있는 test 테이블을 지정한 경로에 백업 받는 명령입니다.

[그림3]

그러면 이제 백업 받은 파일을 복구하는 방법을 알아보겠습니다.
구문은 mysql database_name < backup_filename
예로든 support_test.dump 파일을 복구해 보겠습니다.

[그림4]

이제 mysql에 연결한 상태에서 test 란 테이블이 생성된 것을 확인하는 이미지를 마지막으로 이번 강좌를 끝내도록 하겠습니다.

ex )
백업 ) mysqldump -uroot -p --databases test1 > test1.dump

복구전에 create database test1을 해주어야 함.

복구 ) mysql -u root -p test1 < test1.dump

#########################################################

우선 클라이언트두 mysqldump 명령을 쓸수 있게
관리자 가 /bin 밑에 mysqldump 명령을 복사 해주어야 합니다.
그래야 클라이언트 사용자두 그 명령을 사용할 수 있으니까요..

그런후 아래와 같은 옵션을 써서 디비 백업 받으면 됩니다.

형식:
$ mysqldump [OPTIONS] database [tables]

설명:
테이블이 생략되면 전체 태이블을 백업.
예제:
$ mysqldump --opt database > backup-file.sql
$ mysqldump --opt database | mysql --host=remote-host -C database
$ mysqldump --quick -c -ujhs -p jhs > jhs.out.sql
$ mysqldump --quick -c -t --add-locks -urp bizaide110 > bae110.data.sql

마지막 예제 처럼, -u, -p 가 데이터베이스 앞에와야하며,
데이터베이스는 맨 뒤에 와야한다.


도움말:
$ mysqldump --help

주의: 만약, --quick 이나 --opt 없이 덤프하면 메모리가 많이 소모되어
큰 데이터베이스의 경우 문제가 발생할 수 있다.

옵션:
--add-locks
테이블의 덤프하기전에 해당 테이블을 잠그고 덤프한 후에
테이블을 풀어준다.
-c, --complte-insert
INSERT 구문에서 필드명을 포함한 전체를 덤프
-f, --force
덤프 중 에러가 있어도 계속 진행
-h, --host
특정 호스트의 MySQL 에서 데이터 덤프
-t, --no-create-info
테이블 생성 정보는 덤프하지 않음(데이터만 덤프)
-d, --no-data
테이블 스키마만 덤프
-q, --quick
버퍼를 사용하지 않고 바로 표준출력으로 보낸다.


위의 예기는 원론적인 예기구요..
실사용예
만약 사용자가 할당 받은 디비 이름이 hahaha 라면
그 디비 안에 여러개의 table 이 있지 않습니까?
그러면 여기서는 한번에 기냥 hahaha 라는 디비 전체를 다 긁어 오는 방법을 설명 드릴게요..

#mysqldump -u님의디비아뒤 -p님의디비패스 hahaha >
hahaha_backup.sql
이렇게 해주시면 됩니다.
그러면 hahaha 디비안에 들어있는 테이블과 전체 내용이 싹 읽혀서 .sql 화일 안에 들어 갑니다.
vi hahaha_backup.sql 이렇게 해보세요..
그럼 모든게 들어가 있는것이 확인 될테니

mysql DB Backup

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다