[MySQL] 깨진 테이블 복구법 (Table is marked as crashed and should be repaired)
테이블이 깨지게 되면 DB 테이블이 갑자기 Select 가 안되고 Select 시 아래와 같은 에러가 발생합니다.
........is marked as crashed and should be repaird.
테이블이 깨지는 원인은 보통 다음과 같습니다.
1. 하드디스크의 용량 부족
2. 서버의 다운
3. 하드디스크 오류
4. 기타 MySQL 자체의 일시적인 오류 등
해결 방안으로는 MySQL 콘솔에 접속하여 repair작업을 진행해 주면됩니다.
MySQL서버 계정에 접속 한 뒤 아래와 같이 복구 합니다.
( 테이블이 깨졌을 경우, MySQL 소켓 접속도 안되는 경우가 있습니다. 이때는 /etc/my.cnf 에 소켓 경로를 확인해주시고 재 설정 해주세요)
1. check table 테이블 명;
: 테이블 상태 점검
2. analyze table 테이블 명;
: 테이블 보고서 작성
3. repair table 테이블 명;
: 테이블 복원
4. check table 테이블 명;
이 방법으로 해결되지 않은 경우는 반드시 백업을 해두고 MySQL 서비스를 중시 후 myisamchk 작업을 진행합니다.
1. MySQL 데몬 중지
2. 테이블 파일이 있는 DB 디렉터리까지 이동
3. myisamchk -ev 테이블 명.MYI
: 테이블 파일 상태 점검
4. myisamchk -r 테이블 명.MYI
: 테이블 파일 복구
※ 옵션 설명
[-s] : 에러 발생 시 메시지 출력
[-ev] : 정밀하게 검사하여 메시지 출력
[-r] : 복구
[-v] : 자세한 메시지 출력
[-o] : -r 보다 속도는 떨어지지만 안전하고 -r 으로는 복구하지 못하는 것도 복구 가능
[-e] : -o 로도 복구하지 못하는 경우 사용하나 안전하지는 않음.
※ DB 확장자 파일
*.MYD : 테이블의 데이터를 저장하는 데이터 파일
*.MYI : 테이블의 인덱스 정보를 저장하는 인덱스 파일
*.frm : 테이블의 테이블 구조가 저장되는 테이블 스키마 파일
apache2 기준
/etc/init.d/apache2 stop
/etc/init.d/mysql stop
cd /var/lib/mysql/DB명/
myisamchk -ev 테이블 명.MYI << 검사할테이블명 *mysqldump 할경우 오류나는 부분이 나옴 거기 DB명을 확인
myisamchk -r 테이블 명.MYI
위와 같이 실행할경우 DB복구가 되어 mysqldump 정상적으로 작동
mysql복구, mysql db복구, db복구, db, myisamchk, db오류