"tbl_name.frm" 테이블 정의 (테이블) 파일 "tbl_name. MYD "데이터 파일 "tbl_name. MYI 인덱스 파일 이 세 가지 파일 유형 각각은 서로 다른 형태의 손상을 겪을 수 있지만, 문제는 주로 데이터 파일과 인덱스 파일에서 발생합니다. myisamchk는 "를 생성합니다. MYD"(데이터) 파일이 작동하려면 오래된 "를 제거해야 합니다. MYD 파일을 만들고 새 파일을 원래 파일명으로 바꿔 수리 단계를 종료하세요. --quick을 사용하면 myisamchk는 임시 "를 생성하지 않습니다. MYD" 파일, 그냥 가정하는 거예요. MYD" 파일은 정확하며, 건드리지 않고 새 인덱스 파일만 생성합니다. "MYD" 파일, myisamchk가 자동으로 감지하기 때문에 안전합니다. MYD" 파일이 손상되어 이 경우 복구를 포기해야 합니다. myisamchk를 두 가지 빠른 옵션으로 줄 수도 있습니다. 이 경우 myisamchk는 일부 오류(예: 키 반복)를 포기하지 않고 대신 ". MYD" 파일을 해결하기 위해 제출했습니다. 보통은 두 가지 --빠른 옵션을 사용해 너무 적은 여유 디스크 공간에 대해 일반적인 수정을 구현할 때만 유용합니다. 이 경우에는 myisamchk를 실행하기 전에 최소한 백업을 해두는 것이 좋습니다. 1. 표의 오류 확인 방법 테이블을 확인하려면 다음 명령어를 사용하세요: 마이삼칙 tbl_name 이 방법은 모든 오류의 99.99%를 잡아냅니다. 하지만 데이터 파일이 손상된다는 사실을 알아내지 못합니다(이는 드문 일입니다). 테이블을 확인하고 싶다면, 보통 myisamchk 옵션을 없이 실행하거나 -s 또는 --silent 옵션 중 하나를 사용하는 것이 좋습니다. myisamchk -e tbl_name 완전히 철저한 데이터 검사를 합니다(-e는 "확장 검사"를 의미합니다). 각 라인마다 키를 읽어 올바른 라인을 가리키는지 확인합니다. 많은 키가 있는 큰 테이블에서는 이 작업이 오래 걸릴 수 있습니다. myisamchk는 보통 첫 번째 오류를 발견하면 멈춥니다. 더 많은 정보를 원하시면 --verbose(-v) 옵션을 추가할 수 있습니다. 이로 인해 myisamchk는 최대 20개의 오류까지 계속 진행됩니다. 일반적으로 간단한 myisamchk(테이블 이름 외에는 인수가 없는 것)이면 충분합니다. 마이삼칙 -에 -이 tbl_name 이전 명령어와 비슷하지만, -i 옵션은 myisamchk에 통계 출력을 보내도록 알려줍니다. 2. 테이블 수리 방법 손상된 테이블의 증상은 보통 예상치 못한 쿼리 브레이크이며, 예를 들어 다음과 같은 오류를 볼 수 있습니다: "tbl_name.frm"은 잠겨 있고 변경할 수 없습니다. "tbl_name" 파일을 찾을 수 없습니다. MYI"(오류 코드: ### ). 테이블 프로세서로부터 오류 ###를 받아야 합니다(이 경우 오류 135는 예외입니다). 예상치 못한 파일 종료. 기록 파일들이 파기됐어. 이럴 때는 테이블을 고쳐야 합니다. Myisamchk는 보통 대부분의 문제를 감지하고 고칩니다. 수리 과정은 아래에 설명된 최대 4단계로 구성됩니다. 시작하기 전에 데이터베이스 디렉터리와 체크리스트 파일에 대한 권한을 CD 설정해 두어, mysqld를 실행하는 Unix 사용자(그리고 본인도, 확인하는 파일에 접근해야 하니)가 읽을 수 있는지 확인해야 합니다. 파일을 수정하지 않으면, 그 문서들도 작성 가능해야 합니다. 1단계: 테이블 확인 도망쳐 마이이사마크 *. 마이 또는 (myisamchk -e *. 시간이 더 있다면 제 경험입니다. -s(침묵) 옵션을 사용해 불필요한 정보를 비활성화하세요.
MySQL이 데이터를 저장하는 파일 형식은 광범위하게 테스트되었지만, 데이터베이스 테이블이 손상될 수 있는 외부 조건들이 항상 존재합니다: mysqld 프로세스는 한 번의 쓰기로 종료됩니다; 예: 컴퓨터가 전원을 잃을 때, 예기치 않은 컴퓨터의 종료; 하드웨어 오류. 이 장에서는 MySQL 데이터베이스에서 데이터 손상을 검사하고 처리하는 방법을 설명합니다. 테이블이 많이 손상된다면 그 이유를 찾아보는 게 좋습니다! G.1 MySQL 서버 디버깅을 참고하세요. 크래시 복구를 수행할 때, 데이터베이스 tbl_name 내 각 테이블이 데이터베이스 디렉터리 내 3개의 파일에 대응한다는 점을 이해하는 것이 중요합니다 |