레이블이 mysql backup인 게시물을 표시합니다. 모든 게시물 표시
레이블이 mysql backup인 게시물을 표시합니다. 모든 게시물 표시

2009년 8월 17일 월요일

MySQL 백업3

mysqlhotcopy


1. 복사할 곳이 디렉토리인 경우
mkdir 복사할곳디렉토리/데이터베이스명
LOCK TABLES 테이블 READ;
FLUSH TABLES;
cp -p 테이블명.{frm, MYD, MYI} 복사할곳디렉토리/데이터베이스명/
UNLOCK TABLES;

2.복사할 곳이 데이터베이스인 경우
mkdir datadir/데이터베이스명
LOCK TABLES 테이블 READ;
FLUSH TABLES;
cp -p 테이블명.{frm, MYD, MYI} datadir/데이터베이스명/
UNLOCK TABLES;

3.복사할 곳이 지정이 없는 경우
mkdir datadir/데이터베이스명_copy
LOCK TABLES 테이블 READ;
FLUSH TABLES;
cp -p 테이블명.{frm, MYD, MYI} datadir/데이터베이스명_copy/
UNLOCK TABLES;

데이터베이스명은 복사하는 테이블이 포함되어있는 데이터베이스명이다.

4.옵션
--addtodest : 백업할 곳이 존재하는 경우 멈추지 않고 덮어 씌운다.
--allowold : 백업할 곳이 존재하는 경우 임시로 옮겨놓고 백업이 다 끝난 후 임시로 옮겨논 곳을 지운다.
--keepold : 백업한 곳이 존재하는 경우 임시로 옮겨놓고 백업을 진행한다.
--checkpoint 데이터베이스명.체크포인트테이블명 : 지정한 테이블에 작업기록을 남긴다. 테이블에는 다음과 같은 필드가 필요한다.
time_stamp timestamp not null
src varchar(32)
desc varchar(60)
msg varchar(255)
이 옵션을 지정하면 처음에 이 테이블에 대해서 SELECT가 실행된다.
--flushlog : 테이블 록을 건 다음 FLUSHLOGS를 실행한다.
--method={cp|scp}: scp는 아직 Alpha레벨
--noindices : 인덱스파일 전부를 복사하지 않는다. MYI파일 앞부분 2048바이트까지만 복사한다. myisamchk로 MYI는 작성가능
-q, --quit : 에러만 출력한다.
--record_log_pos 데이터베이스명.체크포인트테이블명 : 복사하기 전에 SHOW MASTER STATUS, SHOW SLAVE STATUS로 얻어진 로그 위치를 지정한 테이블에 기록한다. 테이블에는 다음과 같은 필드가 필요한다.
CREATE TABLE 테이블명 {
host varchar(60) NOT NULL,
time_stamp timestamp(14) NOT NULL,
log_file varchar(32) default NULL, -- SHOW MASTER STATUS의 File
log_pos int(11) default NULL, -- SHOW MASTER STATUS의 Position
master_host varchar(60) NULL, -- SHOW SLAVE STATUS의 master_host
master_log_file varchar(32) NULL, -- SHOW SLAVE STATUS의 master_log_file
master_log_pos int NULL, -- SHOW SLAVE STATUS의 master_log_pos
PRIMARY KEY(host)
}
이 옵션을 지정하면 처음에 이 테이블에 대해서 SELECT가 실행된다.
--resetmaster : 테이블 록을 건 후 복사하기 전에 RESET MASTER를 실행한다.
--resetslave: 테이블 록을 건후 복사하기 전에 RESET SLAVE를 실행한다.
--regexp 패턴 : 패턴에 맞는 데이터베이스를 복사한다.
--regexp /패턴1/./패턴2/ : 패턴1에 맞는 데이터베이스에 , 패턴2에 맞는 테이블을 복사한다.
--suffix= : 기본값은 --suffix=_copy 백업 이름의 접미사.

-u, --user= : 사용자명
-h, --host= : 호스트지정
-p, --password= : 패스워드 지정
-P, --port= : 포트번호 지정
-S, --socket= : 소켓파일지정

--debug : 상세한 정보를 표시
-n, --dryrun : 실제로는 실행하지 않음.




2009년 8월 11일 화요일

MySQL 백업2

mysqlhotcopy를 이용한 백업

mysqlhotcopy는 MyISAM, ARCHIVE테이블에서만 동작하는 Perl로 기술된 스크립트이다.
테이블에 록을 걸고 데이터를 복사한다.
사용하려면 DBD-mysql을 인스톨해야한다. mysqlhotcopy는 my.cnf의 [mysqlhotcopy]그룹과 [client]그룹을 읽어들인다.

사용방법은 다음과 같다.

mysqlhotcopy [옵션]
데이터베이스명[./정규표현/] [데이터베이스명[./정규표현/] ...]
[백업위치 데이터베이스명| 백업위치 디렉토리]

데이터베이스명./정규표현/은 테이블명을 지정하고 싶은 경우 사용한다. /정규표현/에는 테이블명을 선택하기 위한 패턴을 기술한다.

마지막 인수는 백업작성 장소이다 데이터베이스명이나 디렉토리명이나 상관없다. 디렉토리명인경우는 그이름에 [/]이나 [.]가 포함되게 해야한다.

백업위치 데이터베이스명을 생략한 경우에는 [데이터베이스명_copy]이라는 데이터베이스가 백업 데이터베이스 이름이 된다.

1. test데이터베이스를 test_copy데이터베이스에 백업
root@shell# mysqlhotcopy -u root test

2. test데이터베이스를 test_back데이터베이스로 백업
root@shell# mysqlhotcopy -u root test test_back

3. test데이터베이스를 /backup/10/test디렉토리로 백업
root@shell# mysqlhotcopy -u root test /backup/10/test