'MySQL'에 해당되는 글 1건

  1. 2006.10.24 mysql 백업/복구
MY_SQL Backup & Restore | IT일반2006/08/21 16:29
http://blog.naver.com/darkturtle/50007763674

백업과 복구


· 데이터베이스의 백업(backup)과 복구(restore)는 매우 중요하다.


MySQL에서는 mysqldump라는 파일을 실행하여 데이터베이스내의 데이터를 외부 파일로 저장할 수 있다. mysqldump는 mysql 디렉토리 밑의 bin 디렉토리에 존재하며 아래와 같은 명령어를 통해 백업을 수행한다.


mysqldump -u [user_name] -p [백업할 db_name] > [외부로 저장할 파일명]


23. linux3s? 데이터베이스를 백업해 보자.


$ mysqldump -u linux3s1 -p linux3s > linux3s_backup.sql

Enter password : ******


24. 백업된 파일의 확인


$ ls -l linux3s_backup.sql


25. 위 명령의 실행 결과 생성된 linux3s_backup.sql 파일의 내용을 확인한다.


$ cat linux3s_backup.sql


mysqldump 명령으로 백업된 데이터베이스는 해당 데이터베이스내에 있는 테이블의 구조를 정의한 데이터 정의문과 INSERT 문과 같은 데이터 조작문의 SQL 형태로 저장되어 있다.


이렇게 SQL 형태로 자장되면 아래와 같은 명령으로 쉽게 데이터를 복구할 수 있다. 또한 SQL은 데이터베이스의 표준언어이므로 MySQL이 아닌 다른 database server에 해당 database를 이식하려 할 때에도 호환성에 의한 문제가 거의 발생치 않는 장점이 있다.


26. 필요에 따라 linux3s_backup.sql 파일의 내용을 수정한 후 다음과 같은 방법으로 복구한다.


$ mysql -u linux3s1 -p linux3s < linux3s_backup.sql

Enter password : ******



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



이때


create table 문 바로 앞에


DROP TABLE IF EXISTS tableA;


라는 문장을 추가하면


추가하려는 테이블과 같은 이름의 테이블이 존재할 경우,,


그 테이블을 drop 시키고 같은 이름의 테이블을 생성합니다...


이런 처리를 해주기가 귀찮다면,,


mysqldump 로 데이터베이스를 백업할때


--opt 라는 옵션을 주면


백업되면서 위의 문장이 각 테이블마다 저절로 생기기때문에 아주 편리합니다..


예 >> mysqldump --opt -u root -ppwd mydb > /home/user/mydb.sql


이밖에도 --opt 옵션은


백업 sql 파일에 있는 insert 문을 최적화 시킵니다..


예를들어 위에서


insert into(no, name) tableA values(1,'홍길동');

insert into(no, name) tableA values(2,'김길동');

.......................................


와 같은 문장이


insert into tableA values (1,'홍길동'), (2,'김길동'), ................... ;


와 같이 백업됩니다.


따라서 데이터가 아주 많을 경우,, 백업파일의 크기를 상당히 줄일뿐 아니라


백업과 리스토어에 들어가는 오버헤드가 크게 줄어듭니다...


(출처 : 'mysqldump로 백업한 내용을 다시 복구할때' - 네이버 지식iN)

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

mysqldump를 이용한 백업하는 법입니다.

1) 전체 DB를 백업
mysqldump -u myhome -p -A > mysql_backup_all.sql

2) 데이타베이스별로 백업 (--databases 뒤에 myhome mysql 등 줄줄이 나열함)
mysqldump -u myhome -p --databases myhome mysql > mysql_backup.sql

3) 특정 테이블 백업 (myhome의 tablea만 백업)
mysqldump -u myhome -p --myhome tablea > mysql_backup_tablea.sql

-------

다음으로 복구하는 법입니다.
mysql -u myhome -p myhome < 백업한파일명.sql

간단하죠?

-------
추가답변입니다. 테이블이 이미 있다고 하는건

테이블이 있는 상태에서 복구를 했기 때문입니다.

만들어진 스크립트 보시면 아시겠지만,

create table 문부터 들어있습니다.

복구시 원래의 데이타를 drop 하신뒤에 복구 스크립트를 돌리세요.

참고로 create table 같은거 빼고 data만 백업하실때는 mysqldump시

옵션을 --no-create-info를 추가로 주시면 됩니다.

Posted by trust
,