본문 바로가기

개발이야기/SQL

MYSQL CHECK/REPAIR/OPTIMIZE 에 대해 알아보자

728x90

MY-SQL CHECK / REPAIR / OPTIMIZE 에 대해 알아보자




CHECK (특정 테이블 체크)

테이블(Table) 의 이상유무를 체크 해주는 기능이다.

윈도우의 scandisk(스캔디스크, 디스크점검) 과 같은 역할


REPAIR(특정 테이블 복구)

깨진 테이블을 복구 해주는 명령어이다.

이본적으로 Optimize도 같이 진행 된다


Optimize(특정 테이블 최적화)

흩어진 인덱스(index)와 같은 것들을 정렬하여 검색속도를 빠르게 한다거나 등의 작업이다 Repair보다 가벼운 작업이다

윈도우의 디스크 조각모음과 같은 기능이다.


사용 방법



use [DB명];                   # 작업할 Database를 선택한다 (필수)


check table [테이블명];    # 테이블을 체크 한다

repair table [테이블명];    # 테이블을 복구 한다

optimize table [테이블명]; # 테이블을 최적화 한다


repair, optimize 같은 경우는 복구할 테이블을 한번 백업한 뒤에 찾기 때문에 서버에 용량이 충분히 있는지 체크하여 진행해야 한다.

체크를 하지 않고 진행할 경우 작업 도중 멈추게 되며 테이블 전체가 깨지게 된다. 이경우 테이블을 Select나 Update등 사용을 못하게 된다


이경우에 테이블을 통으로 복구 시킬 방법이 또 한가지 더 있다

서버마다 경로가 다른데 [테이블명.MYI] 파일들이 어딘가에 있을 거다.

find / -name *.MYI 와 같은 명령어로 경로를 파악한 후 해당 경로로 들어간다

 

myisamchk --recover /var/lib/mysql/mydatabase/mytable.MYI 이런식의 명령어를 통해 복구를 할 수 있다

아래는 myisamchk 에 대한 옵션을 간단히 정리한 것이다


myisamchk 사용전 주의사항


  - mysql 데몬을 stop 시킨후 이 유틸리티를 사용해야함.
  - mysql 데몬을 중지시킬수 없는 사항이라면 검사할 테이블에대한 rock을 걸고 
    검사를 수행하여야만 검사도중에 발생할수있는 오류를 막을수있다. 
  - 모든 작업은 항상 백업을 한후 작업을 수행하는것이 좋을것이다. 


# myisamchk -s,--silent [table 명] 

      -> 에러만 출력

      

   # myisamchk -v,--verbose [table 명] 

    ->  -s 옵션보다 많은 정보를 출력

 

   # myisamchk -V 

   ->    myisamchk 버젼을 표시


   # myisamchk -c,--check [table 명] 

   ->  테이블의 에러를 check 함

 

   # myisamchk -e,--extend-check [table 명] 

   ->  테이블을 좀더 세밀하게 check 함, 일반적인 방법으로 error를 찾을수없을  경우 사용

 

   # myisamchk -F,--fast [table 명] 

->    빠른게 테이블 check 한다.정교한 체크는 하지않느다. 

  

   # myisamchk -C,--check-only-changed [table 명] 

->     테이블을 check 하고,테이블을 check 이후의 상태로 변경한다. 

 

   # myisamchk -f,--force [table 명] 

->    테이블에 error에 있을경우 강재로 check 한다. 

 

   # myisamchk -i,--information [table 명] 

->    check한 결과의 정보를 통계화하여 보여준다. 


   #myisamchk -m,--medium-check [table 명] 

  ->  extend-check 옵션보다 check 속도가빠르며,99.9 % 의 에러을 찾을수있다. 


Repair 옵션  

  

    #myisamchk -o -B,--backup [table 명] 

  ->    MYD파일을 백업한다. 형식은 [filename-time.BAK]의 파일이 생긴다. 

     

    # myisamchk -e,--extend-check [table 명] 

->    세부적인 파일까지 복구를해준다.일반적으로 아주 하찮은 에러까지 찾을수 

    있다.하지만 자포자기의 상태가 아니고서는 이옵션을 사용하지 않는게 좋다. 

  

    # myisamchk -f,-force [table 명] 

->     이전것의 temporary file을 덥어쒸운다. 

 

    # myisamchk -l,--no-symlinks [table 명] 

->     심복릭 링크를 따르지않겠다는 옵션이다. 일반적으로 myisamchk 는symlink  points를 복구한다. 

 

    # myisamchk -r,--recover [table 명] 

->     unique key를 제외한 대부분를 복구한다. 

 

    # myisamchk -n,--sort-recover [table 명] 

->     sorting하면서 테이블을 복구한다. 심지어 temporary 파일과 같은 아주 큰 

     파일역시 sorting하면서 복구한다. 

 

   # myisamchk -o,--safe-recover [table 명] 

->     -r 옵션보다 느리게 복구한다.그러나 좀더 섬세한 복구를 지원한다. 

 

    # myisamchk -q,--quick [table 명] 

->     테이터 파일의 수정없이 복구한다. 

 

기타 옵션 

    # myisamchk -d,--description [table 명] 

->     테이블에 대한 정보를 출력한다. 

 

    # myisamchk -S,--sort-index [table 명] 

->     index 블록을 sort한다. 

 

    # myisamchk -R[index번호],--sort-records [table 명] 

->     index 번호를 기준으로 인덱스를 정렬해준다.