[펌]mysql 깨진 테이블 복구하기
## 데이터베이스 복구
- 복구 유틸리티
1. 복구대상 인덱스 테이블이 *.ISM 파일 형식이면 isamchk 사용
2. 복구대상 인덱스 테이블이 *.MYI 파일 형식이면 myisamchk 사용
해당 유틸리티 사용시에는 mysql 종료 후 사용할 것
- 복구 시 사용되는 데이터베이스 관련 파일 위치
1. /var/lib/mysql/db명에 위치
2. 각 테이블 하나에 3개의 파일이 생성되어 해당 테이블의 데이터가 실제로 저장
*.MYD : 실제 데이터가 저장되는 데이터 파일
*.MYI : 테이블의 인덱스 정보를 저장하는 인덱스 파일
*.frm : 테이블의 구조가 저장되는 스키마 파일
- 이상 유무 점검 방법
# myisamchk -s /var/lib/mysql/test.MYI //점검결과를 간략히 출력
# myisamchk -v /var/lib/mysql/test.MYI //점검결과를 상세히 출력
# myisamchk -i /var/lib/mysql/test.MYI //점검결과를 상세히 종합하여 출력
- 깨진 테이블 복구하기
# myisamchk -rv /var/lib/mysql/test.MYI //
# myisamchk -o /var/lib/mysql/test.MYI // r옵션보다는 안전모드로 복구, 속도는 느리다
r옵션으로 복구하지 못하는 내용도 복구 가능
# myisamchk -er 또는 -eo /var/lib/mysql/test.MYI // 테이블이 완전히 깨진 최후의 복구방법
- myisamchk로 복구되지 않을 경우
1. frm 파일로 인해 복구가 되지 않는 경우
- MYI, MYD 파일의 원본 백업
- mysql 접속 후 create 문을 이용하여 테이블 생성
- myisamchk를 통해 복구 시도
2. MYI 파일로 인해 복구가 되지 않는 경우
- MYD, frm 파일의 원본을 백업
- mysql 접속 후 delete 구문을 통해 해당 테이블의 모든 레코드를 삭제
- mysql 종료 후 백업한 MYD, frm 파일을 원위치로 복사 후 myisamchk 시도