기본 콘텐츠로 건너뛰기

[Mysql 에러] Table '테이블명' is marked as crashed and should be repaired

어제 서버가 갑자기 다운되어서 강제 리부팅을 한 후 웹페이지를 보니 아래와 같은 에러가 발생하였다.

[에러 내용]
ERROR 1194 (HY000): Table '테이블명' is marked as crashed and should be repaired

mysql server version : mysql-server-5.0.45

[해결 방법]
1. 반드시 백업을 한다.
tar cvfpz xxx_20091223.tar.gz ./디비명

2. 분산된 인덱스를 다시 정렬

mysql> analyze table 테이블명 (쉘에서 수행되는 myisamchk --analyze 와 같은 명령이다.)

analyze : myisam, bdb, innodb에 적용된다. analyze가 수행되는 동안에는 myisam과 bdb는 read에 lock가 걸리며 innodb에는 쓰기에 lock가 걸린다.

수행결과 출력 형태는 다음과 같다.
Column
Value
Table
The table name
Op
Always analyze
Msg_type
status, error, info, or warning
Msg_text
An informational message

인덱스가 다시 정렬되면 "show index from 테이블명" 으로  확인할 수 있다.

[참고] mysql reference

3. repair table 테이블명 (쉘에서 수행되는 myisamchk --recover 와 같은 명령이다)
수행결과 출력 형태는 다음과 같다.
Column
Value
Table
The table name
Op
Always repair
Msg_type
status, error, info, or warning
Msg_text
An informational message

이와 같은 형태로 repair할때 여러 행이 출력되는데 중요한 것은 맨 마지막 라인에 Msg_type에는 status가 출력되어야 하며 Msg_text에는 OK가 출력되어야 한다.
그렇지 않을경우 repair가 제대로 수행되지 않은 경우이므로 이럴 경우에는 쉘에서 "myisamchk --safe-recover *.MYI"를 실행해야 한다.

[참고] mysql reference

댓글