7.6.1 충돌 복구에 myisamchk 사용
이 섹션에서는 MySQL 데이터베이스의 데이터 손상을 검사하고 처리하는 방법을 설명합니다. 테이블이 자주 파손되는 경우는 그 이유를 찾을 수 있도록하십시오. 섹션 B.5.4.2 "MySQL이 계속 충돌하는 경우의 대처 방법" 을 참조하십시오.
MyISAM
테이블이 어떻게 손상 될 가능성이 있는지에 대한 설명은 섹션 15.2.4 "MyISAM 테이블 문제" 를 참조하십시오.
외부 잠금을 해제하고 mysqld를 실행 한 (이것은 기본값입니다) 경우, mysqld가 같은 테이블을 사용할 때 myisamchk를 사용하여 테이블을 확실히 체크 할 수 없습니다. myisamchk를 실행하는 동안 mysqld를 통해 테이블에 아무도 접근하지 않는 것을 확신한다면, 테이블 검사를 시작하기 전에 mysqladmin flush-tables를 실행해야 할뿐입니다. 이를 보장 할 수없는 경우에는 테이블 점검 중에 mysqld를 중지해야합니다. myisamchk를 실행하여 mysqld가 동시에 업데이트하는 테이블을 선택하면 테이블이 손상되지 않고 손상된라는 경고를받을 수 있습니다.
외부 잠금을 사용하여 서버를 실행하려면 myisamchk를 사용하여 언제든지 테이블을 확인할 수 있습니다. 이 경우 서버가 myisamchk에서 사용하는 테이블을 업데이트하려고하면 서버는 myisamchk이 끝날 때까지 기다린 다음 계속합니다.
myisamchk를 사용하여 테이블을 복구하거나 최적화하는 경우, mysqld 서버가 그 테이블을 사용하고 있지 않은지 항상 확인해야합니다 (이것은 외부 잠금이 해제되는 경우에도 적용됩니다 매스). mysqld를 중지하지 않으면, myisamchk을 실행하기 전에 적어도 mysqladmin flush-tables를 실행하십시오. 서버와 myisamchk가 동시에 테이블에 액세스하면 테이블이 손상 될 수 있습니다.
충돌 복구를 실행하면 데이터베이스의 각 MyISAM
테이블 tbl_name
은 다음 표에 나열된 데이터베이스 디렉토리에있는 3 개의 파일에 대응하는 것을 이해하는 것이 중요합니다.
File | Purpose |
---|---|
| Definition (format) file |
| Data file |
| Index file |
이 세 가지의 파일 형식은 각각 다양하게 손상 될 수 있지만, 대부분의 경우에 문제는 데이터 파일과 인덱스 파일에서 발생합니다.
myisamchk는 .MYD
데이터 파일의 사본을 각 행에 작성하여 작동합니다. 이것은 오래된 .MYD
파일을 삭제하고 새로운 파일을 원래의 파일 이름으로 변경하여 복구 단계를 종료합니다. --quick
을 사용했을 경우, myisamchk는 임시 .MYD
파일을 생성하지 않고, 대신에 .MYD
파일이 옳다고 보며, .MYD
파일에 손을 대지 않고 새로운 인덱스 파일 만 생성합니다. myisamchk는 .MYD
파일이 손상된 여부를 자동으로 감지하고 손상된 경우 복구를 중지하기 위해 지금은 안전합니다. myisamchk에 --quick
옵션을 두 번 이상 지정할 수 있습니다. 이 경우, myisamchk는 일부 오류 (중복 키 에러 등)에서 중지하지 않고 .MYD
파일을 수정하고이를 해결하려고합니다. 일반적으로 2 개의 --quick
옵션의 사용은 일반적으로 복구를 수행하기 위해 디스크 공간이 너무 적은 경우에만 유용합니다. 이 경우 적어도 myisamchk를 실행하기 전에 테이블을 백업하십시오.