테이블에 이상이 생기면 나타나는 대표적인 증상과 테이블을 확인했을 때 (desc 테이블 이름) 나오는 에러 메시지의 내용은 다음과 같다.
ERROR 1016: Can't open file: '테이블이름.MYI'. (errno: 145)
이런 메시지를 처음 접했을때 취할 행동은 repair table 을 실행할 수 있는 계정 (root)으로 접속하여 복구해본다.
mysql> repair table 테이블이름
이렇게 복구가 된다면 좋겠지만 이래도 복구가 안된다면.. myisamchk 를 이용한다.
myisamchk 는 테이블의 정의와 데이터, 인덱스를 저장하는 .frm, .MYI, .MYD 파일 자체를 검사하는 프로그램이다. 따라서 MySQL 서버가 테이블에 쓰기 (UPDATE, INSERT) 를 하는 것은 이러한 파일에 쓰기를 하는 것을 의미하므로 MySQL 서버가 실행중일때 myisamchk 를 실행하는 것은 바람직하지 않다.
myisqmchk를 사용할때는 MySQL 서버를 종료하거나 LOCK TABLE 을 이용하여 테이블을 잠그는 것이 좋다.
★ 테이블 확인
mysql> desc returnmail40; (returnmail40 은 테이블 이름)
ERROR 1016: Can't open file : \returnmail40.MYD\. (errno: 145)
★ 에러코드 확인
\mysql\bin\perror 145
Error code 145: Unknown error
145 = Table was marked as crashed and should be repaired
★ 기본 오류 검사
\mysql\data\ReturnMail\myisamchk --extend-check returnmail40
myisamchk: error: File \returnmail40;\doesn't exist
★ 세부 오류 검사
\mysql\data\ReturnMail\myisamchk --extend-check returnmail40
myisamchk: error: File \returnmail40;\ doesn't exist
★ 인덱스 복구 시도
\mysql\bin\myisamchk --recover --quick returnmail40
myisamchk: error: File \returnmail40;\doesn't exist
★ 데이터포함 복구 시도
\mysql\bin\myisamchk --recover returnmail40
myisamchk: error: File \returnmail40;\ doesn't exist
★ 완전 복구 시도
\mysql\bin\myisamchk --safe-recover returnmail40
myisamchk: error: File \returnmail40;\ doesn't exist
'DataBase > MySQL' 카테고리의 다른 글
[본문스크랩] my_sql 유릴리티 설명 (0) | 2010.04.24 |
---|---|
[본문스크랩] load data infile MySQL Dump (0) | 2010.04.24 |
[본문스크랩] 5.x 버젼 이전 Mysql의 용량 제한 없앨 때 (0) | 2010.04.24 |
[데이터베이스] MYSQL 슬로우 쿼리 mysql slow query 보기 (0) | 2010.04.24 |
Sleep process 죽이기 (0) | 2010.04.24 |