15.2.4.1 MyISAM 테이블 손상
MyISAM
테이블 형식은 매우 안정적인 포맷입니다 (SQL 문이 수행 테이블에 대한 모든 변경은 그 문이 돌아 오기 전에 기록됩니다)하지만 여전히 다음과 같은 상황이 발생하면 테이블이 손상 우려가 있습니다.
mysqld 프로세스는 쓰기 중에 강제 종료됩니다.
컴퓨터가 예기치 않게 종료됩니다 (예 : 컴퓨터의 전원이 꺼 졌을 경우 등).
하드웨어 장애.
서버가 수정중인 테이블을 외부 프로그램 (myisamchk 등)를 사용하여 동시에 수정하고 있습니다.
MySQL 또는
MyISAM
코드의 소프트웨어 버그입니다.
테이블이 손상된 경우의 전형적인 증상은 다음과 같습니다.
테이블에서 데이터를 선택할 때 다음 오류가 표시됩니다.
Incorrect key file for table : '...'. Try to repair it
쿼리가 테이블에서 행을 감지하지 않거나 불완전한 결과를 반환합니다.
MyISAM
테이블의 상태를 CHECK TABLE
문을 이용하여 확인할 수 있으며, 손상된 MyISAM
테이블을 REPAIR TABLE
을 이용하여 복구 할 수 있습니다. mysqld가 동작하지 않는 경우, myisamchk 명령어를 이용하여 테이블을 확인하거나 복구 할 수 있습니다. 섹션 13.7.2.2 "CHECK TABLE 구문」 , 섹션 13.7.2.5 "REPAIR TABLE 구문」 및 섹션 4.6.3 "myisamchk - MyISAM 테이블 유지 보수 유틸리티" 를 참조하십시오.
테이블이 자주 파손되는 경우는 그 원인을 파악하도록하십시오. 가장 중요한 것은 서버의 충돌에 의해 테이블이 손상되었는지 여부를 확인하는 것입니다. 오류 로그의 최신 restarted mysqld
메시지를 검색하면 쉽게 확인할 수 있습니다. 이런 메시지가있는 경우, 테이블의 손상은 서버 다운에 의한 가능성이 높아집니다. 그렇지 않으면 손상은 일반적 작업 중에 일어난 가능성이 있습니다. 이것은 버그입니다. 문제점을 명확히 재현 가능한 테스트 케이스를 작성해야합니다. 섹션 B.5.4.2 "MySQL이 계속 충돌하는 경우의 대처 방법" 및 섹션 24.4 "MySQL의 디버그 및 이식" 을 참조하십시오.