테이블의 복구 과정은 다음과 같이 진행된다.
- 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 파일을 재구성한다.
댓글 없음:
댓글 쓰기