[MySQL] 깨진 테이블 복구법 (Table is marked as crashed and should be repaired)

돌아다니면서 구한 자료로 공부하는 공간입니다..

틀린부분이 있다면 말씀해주시면 수정하도록 하겠습니다.

※ 남을 비방하거나 욕 / 정치적인 글은 삭제 대상이 됩니다. ※

[MySQL] 깨진 테이블 복구법 (Table is marked as crashed and should be repaired)

만키로군 0 898 0

테이블이 깨지게 되면 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 정상적으로 작동

 

 

, , , , ,

0 Comments
제목