My-sql이 깨지거나 잘못된 테이블 파일을 복구하는 유틸입니다

*.MYD : 해당테이블의 데이터가 저장되는 테이블 데이터파일입니다. 

-> 실제 데이터를 저장하는 데이터 파일

*.MYI : 해당테이블의 인덱스정보가 저장되는 테이블 인덱스파일입니다.

-> 인덱스 정보를 저장하는 인덱스파일

*.frm : 해당테이블의 테이블구조가 저장되는 테이블스키마파일입니다.

-> 테이블 구조가 저장된 테이블 스키마 파일

isamchk ISAM테이블파일을 대상으로 수정 및 복구를 하는 용도로 사용이 되고

myisamchk MYISAM테이블파일을 대상으로 수정 및 복구하는 용도로 사용이 됩니다


MYSQL 3.23버전 이전에는 MYSQL의 인덱스파일로서 *.ISM파일형식을 사용하였고 

MYSQL 3.23버전 이후에는 *.MYI파일형식을 현재까지 사용하고 있습니다.  

따라서 사용하시는 MYSQL의 버전이 3.23이전버전이면 isamchk로 복구하시고 

3.23이후 버전이면 myisamchk를 사용하여 복구하시면 됩니다.


*.ISM -> isamchk

*.MYI -> myisamchk


한가지 주의하실 것은 myisamchk isamchk든 복구 대상파일은 반드시 MYSQL의 인덱스파일이라는 것입니다, *.ISM파일(isamchk)이나 *.MYI파일(myisamchk)파일이 그 대상이될 뿐 다른 파일은 그 대상의 되지 못한다는 점 꼭 기억하시기 바랍니다.


[주의사항]  반드시 MYSQL종료 후에 myisamchk(isamchk) 사용하십시요 

myisamchk(isamchk)를 사용하실 때에는 반드시 MYSQL을 종료한 후에 사용하시기 바랍니다.  만약 MYSQL이 실행되어있는 도중에 myisamchk를 사용하신다면 복구도중 데이터의 추가/삭제/수정이 될 수 있으므로 오히려 더 심각한 상황을 유발하는 원인이 될 수도 있기 때문입니다복구 유틸리티인 myisamchk의 설명보다 필자는 MYSQL 종료 후에 사용하실 것을 더욱 강조하고 있습니다.


1. 기능. 
- 손상된 테이블을 점검하고, 복구하고, 테이블 정보를 출력하고, 인덱스 키 분포를 해석하고, 인덱스를 사용가능하게 하거나 불가능하게 하는 등의 일을 한다. 

2. 사용법. 
myisamchk [options] tablename[.MYI] ... 
isamchk [options] tablename [.ISM] .... 

3. 주요 옵션 리스트. 
- myisamchk와 isamchk 둘 모두에서 사용가능한 옵션 정리. 

1) --analyze, -a 
-> 키분포 해석을 수행 한다. 이는 서버가 인덱스 기반 검색과 조인을 보다 빠르게 수행할 수 있도록 도와준다. --description과 --verbose 옵션을 같이 사용해서 키분포에 대한 정보를 얻을 수 있다. 

2) --block-search=n, -b n 
-> 블록 n 에서 시작하는 블록을 포함하는 테이블 열의 시작을 출력해 낸다. 
이는 오직 디버깅을 위한 것이다. 

3) --description , -d 
-> 해당 테이블에 대한 서술적인 정보를 출력한다. 

4) --extend-check, -e 
-> 확장된 테이블 점검을 수행한다. 이 옵션은 거의 사용할 필요가 없는데, 
myisamchk와 isamchk가 보통 한단계 낮은 확장된 점검모드로 에러를 찾기 때문이다. 

5) --force, -f 
-> 테이블에 대한 임시 파일이 이미 존재 한다 해도, 테이블을 강제로 검사하거나 수리한다. 

6) --information, -i 
-> 테이블 내용에 대한 통계적인 정보를 출력한다. 

7) --keys-used=n, -k n 
-> --recover 옵션과 함께 사용된다. isamchk 에 대해서는 MySQL은 오직 처음 n개의 인덱스만 갱신한다. 다른말로 n보다 큰 숫자의 인덱스들을 비활성화로 만든다. myisamchk 에서는 n은 사용할 인덱스를 가리키는 비트 마스크이다. 

8) --no-symlinks, -l 
-> 테이블 인자가 심벌릭 링크이면, 보통 심벌릭 링크가 가리키는 테이블이 수리된다. 

9) --quick, -q (boolean) 
-> --recover 와 함께 사용되며, --recover만 사용했을때보다 수리가 더 빨라진다. 

10) --recover, -r 
-> 복구 작업을 수행한다. 

11) --safe-recover, -o 
-> --recover 방법보다 더 느린 복구 방법이지만, --recover가 하지 못하는 몇가지 문제를 고칠수 있다. --safe-recover는 또한 --recover보다 적은 디스크 공간을 사용한다. 

12) --sort-index, -S 
-> 계속되는 복구에 대해 순차적인 블록 읽기 속도를 높이기 위해 인덱스 블록들을 정렬한다. 

13) --sort-records=n, -R n 
-> 인덱스 n 내에 레코드가 나열된 순서에 따라 데이터 레코드들을 정렬한다. 

14) --unpack, -u 
-> 묶인 파일을 풀어낸다. myisamchk는 myisampack으로 , isamchk은 pack_isam으로 묶인 파일을 풀어낸다. 

15) --wait, -w 
-> 테이블이 잠겼다면 사용 가능할때까지 기다린다. 


- myisamchk에서만 사용 가능한 옵션 리스트. 

1) --back , -B 
-> 데이터 파일 (.MYD)을 수정하는 옵션에 대해서, tbl_name-time.BAK 형태의 
파일명을 가진 백업 파일명을 만든다. time은 타임 스탬프 값을 나타낸다. 

2) --check, -c 
-> 테이블 에러를 점검. 

3) --check-only-changed, -C 
-> 마지막 점검 이후로 변경되지 않은 테이블을 점검한다. 

4) --correct-checksum 
-> CHECKSUM=1 로 생성된 테이블에 대해서, 테이블내의 해당 체크섬 정보가 올바른지 확인한다. (MySQL-4.0.0 에서 추가됨) 

5) --data-file-length=n, -D n 
-> 꽉 차게 되는 데이터 파일을 재구성 할때, 데이터 파일에 허용되는 최대길이. 
(이 옵션은 --recover나 --safe-recover 와 함께 사용시에 효과가 있다.) 

6) --fast, -F 
-> 테이블들이 적절하게 닫히지 않은 경우에만 점검 한다. 

7) --medium-check, -m 
-> --extend-check 보다 빠른 방법을 사용하지만 다소 덜 철저하게 테이블을 점검한다. 

8) --parallel-recover, -p 
-> --recover 에 관해서만 복구 작업을 수행한다. (MySQL 4.0.2에서 추가된 옵션) 

9) --read-only, -T 
-> 해당 테이블을 점검되어진 것으로 표시하지 않는다. 

10) --set-auto_increment [ = n ], -A [n] 
-> 시퀀스값들이 n에서 시작하도록 AUTO_INCREMENT 계수기를 설정한다. 

11) --set-character-set=charset 
-> 인덱스 재구축시, 주어진 문자 세트의 차례 순서를 사용하여 인덱스 항목의 
순서를 정한다. 

12) --sort-recover, -n 
-> 임시 파일이 굉장히 커지는 동작을 수행해야 하는 경우라도 정렬된 복구를 강제한다. 

13) --start-check-pos=n 
-> 위치 n 에서 데이터 파일 읽기를 시작한다. 

14) --tmpdir=dir_name, -t dir_name 
-> 임시 파일들을 위해 사용되는 디렉토리 경로명. 

15) --update-state, -U 
-> 상태를 나타내도록 테이블에 저장된 내부 블래그를 갱신한다. 

- myisamchk 와 isamchk 에서 사용 가능한 변수 정리 

1) key_buffer_size 
-> 인덱스 블록들에 사용되는 버퍼의 크기. 

2) read_buffer_size 
-> 읽기 블록들에 사용되는 버퍼의 크기. 

3) write_buffer_size 
-> 쓰기 블록들에 사용되는 버퍼의 크기. 

4) sort_buffer_size 
-> 키값 정렬 작업에 사용되는 버퍼 크기. 

5) sort_key_blocks 
-> 인덱스에 대해 사용되는 B-트리 구조의 깊이에 관련됨. 

6) decode_bits 
-> 압축된 테이블들을 부호화 할 때 사용되는 비트수. 

7) ft_max_word_len 
-> FULLTEXT 인덱스안에 포함될 수 있는 단어들의 최대 길이. 

8) ft_max_word_len_for_sort 
-> FULLTEXT 인덱스 안으로 삽입되기에 충분히 짧다고 생각되는 단어들의 길이. 

9) ft_min_word_len 
-> FULLTEXT 인덱스 안에 포함 될 수 있는 단어들의 최소 길이. 

10) myisam_block_size 
-> 인덱스 블록들을 위해 사용된 블록 크기. 


myisamchk -o -r *.*     //복구할 파일들 (DATABASE) 데이타 베이스 깨졌을 시 복구



+ Recent posts