2010년 4월 24일 토요일

테이블의 복구 과정(myisamchk)

테이블의 복구 과정은 다음과 같이 진행된다.



- 1 단계 : 테이블 체크

- 먼저 myisamchk *.MYI 를 실행하거나 시간이 더 있다면 myisamchk -e *.MYI 를 실행하여 어떤

- 테이블에 오류가 있는지 체크한다. 테이블의 오류가 체크되면 2 단계로 넘어가고, 체크가 되지 않

- 거나 체크 도중 에러가 발생하면 3 단계로 넘어간다.



- 2 단계 : 쉬우면서 안전한 복구

- 오류가 있는 테이블을 발견하였으므로 myisamchk -r -q <테이블명> 을 실행하여 빠른 복구를

- 실행한다. -q 옵션을 부여하였기 때문에 데이터 파일(.MYD) 은 건드리지 않고 인덱스 파일을

- 복구할 것이다. 이런 식으로 계속해서 다음 테이블을 복구한다.



- 그래도 복구가 되지 않으면 다음과 같이 시도한다.



- 1. 데이터 파일을 백업해둔다.

- 2. myisamchk -r <테이블명> 을 실행하여 복구 모드로 복구를 실행한다. 오류가 있는 로우를

- 삭제하면서 새로운 인덱스 파일을 생성할 것이다.

- 3. 그래도 안되면 myisamchk --safe-recover <테이블명> 을 실행한다. 예전 버전의 복구 방법

- 이지만 이 옵션으로 복구될 수도 있다.



- 복구 도중 에러가 발생하면 3 단계로 넘어간다.



- 3 단계 : 어려운 복구

- 이 단계는 인덱스 파일의 처음 16K 가 손상되거나 잘못된 정보를 가지고 있을 때 혹은 인덱스

- 파일이 없을 때 실시하게 된다. 이러한 경우 필요에 따라 다음과 같이 인덱스 파일을 생성하도록

- 한다.



- 1. 데이터 파일(.MYD) 을 다른 장소로 이동한다. 복사가 아니라 이동이다.

- 2. mysql> 에 접속하여 해당 테이블을 삭제한다. TRUNCATE TABLE 문장을 사용할 것을

- 권장한다.

- 3. 앞서 이동시켜둔 데이터 파일을 원래 위치로 복사하자. 이 때는 이동이 아니라 복사를 시켜서

- 만약의 사태를 대비한다.

- 4. myisamchk -r -q <테이블명> 을 실행하여 복구한다. .frm 파일과 .MYD 파일을 이용하여

- 인덱스 파일(.MYI) 이 복구될 것이다.



- 4 단계 : 매우 어려운 복구

- 이 단계는 .frm 파일마저 심하게 손상되었을 때 실행한다. 사실 최초 테이블을 생성항 이후 .frm

- 파일은 변경될 일이 없기 때문에 .frm 파일이 손상되는 일은 거의 발생하지 않는다.

- 이러한 경우 다음과 같은 방법으로 복구를 실시한다.



- 1. 백업해둔 파일이 있다면 백업해둔 .frm 파일을 원래 자리로 복사시키고 3 단계를 실시한다.

- 그리고 백업해둔 .MYI 파일을 원래 자리로 복사시키고 2 단계를 실시한다. 그리고 나서

- 마지막으로 myisamchk -r 을 실행한다.

- 2. 백업해둔 파일은 없지만 테이블의 구조를 알고 있다면 .frm 파일과 .MYI 파일은 복구할 수

- 있다. 먼저 다른 곳에서 새로 테이블을 생성하여 .frm 과 .MYI 파일을 만들 수 있다. 물론

- .MYD 파일은 새로 만들 수는 없을 것이다. 2 단계로 가서 기존의 .MYD 파일을 이용하여

- .MYI 파일을 재구성한다.

댓글 없음:

댓글 쓰기