본문 바로가기

DATABASE

[MySQL] Database backup

우선.. mysql을 접속합니다.
접속까지의 명령어는 기본 명령어 설명에 있으니 생략을;;

로그파일이 많이 쌓여서 디스크 용량이 부족한 경우 일단 로그파일을 지웁니다.

mysql>RESET MASTER

로그 파일은 XXX-bin.000001 같은 형식으로 쌓입니다.
위치는 디폴트로 설치했다면 /usr/local/mysql/var/에 있을 겁니다.
RESET MASTER를 입력하면 로그 파일들이 지워집니다.

백업을 하는 방법은 쉘에서 하는 법과 mysql내에서 하는법 두가지가 있습니다.

★mysql내에서 백업하는 법

mysql>backup table <table1>[, table2, table3...] to ''/usr/local/backup'';

의 형식이구요. 물론 뾰족괄호같은건 입력하는거 아니구요 대괄호안은 여러 테이블 백업시 입력하는 겁니다. to다음은 저장할 디렉토리명입니다. 작은따옴표에 넣어서 입력하면 됩니다.
리스토어는

mysql>restore table <table1>[, table2, table3...] from ''/usr/local/backup'';

★쉘에서 백업하는 방법
mysqldump란 실행프로그램은 /usr/local/mysql/bin 에 있습니다.(물론 기본설치시)
그러므로 거기까지 들어가서 실행합니다.
mysqldump를 이용해서 백업을 하면 텍스트형태로 백업이 되기 때문에vi에서 열어서 볼 수 있습니다. DB생성, 테이블생성구조등이 나와있기 때문에 이용해서 다른 작업도 가능합니다.

전체 데이터베이스 백업하기
>./mysqldump -uroot -ppass -e --all-databases > /usr/local/backup/alldata.sql
데이터베이스 단위로 백업하기
>./mysqldump -uroot -ppass -e --databases db1 > /usr/local/backup/db1.sql

*옵션에서 e를 붙이는 이유는 extended-insert로 리스토어시 보다 빠르게 하기 위해 쿼리를 변형하는 옵션입니다.

리스토어 하기
>./mysql -uroot -ppass < /usr/local/backup/alldata.sql
innodb로 리스토어 하려면 alldata.sql을 vi로 열어서 Type=MyISAM부분을 삭제하면 자동으로 innodb로 저장됩니다.

물론 -u다음에 붙어있는 root는 mysql아이디이기 때문에 알맞는 아이디로 바꾸시구요 -p뒤에 있는 pass란 글자도 마찬가지..
-p라고만 입력하고 엔터를 치면 비밀번호를 물어봅니다. 그 때 비밀번호를 입력해줘두 됩니다.


출처: http://kurapa.com

'DATABASE' 카테고리의 다른 글

[MysSQL] SQLGate for MySQL 연결  (1) 2011.10.16
[MySQL] Linux 에서 자동실행등록  (0) 2011.10.16
[MySQL] 외부접속  (0) 2011.10.16
[mySQL] RHEL5에서 mysql설치  (0) 2011.10.16
[ORACLE] 오라클 시간계산  (0) 2011.10.16