2009년 9월 15일 화요일

테이블관리3- myisamchk

myisamchk는 MyISAM테이블을 체크하고 복구하는 전용명령어이다.
서버가 테이블을 사용하지 않는 상태(갱신하지 않는, 열려있지 않은 상태)에서 myisamchk를 사용하지 않으면 안된다.
mysql명령어에서 --skip-external-locking 옵션을 사용했을 경우 MySQL 서버를 정지시키지 않아도 myisamchk를 사용할 수 있다.

사용전에는 FLUSH TABLES을 실행해서 일단 테이블을 닫아주어야한다.
또, 체크중에는 LOCK TABLES을 사용해서 클라이언트가 체크중에 있는 테이블에 접근할 수 없도록 해둘 필요가 있다.

기본적인 사용방법은 아래와 같다.
myisamchk [옵션] {테이블명|MYI파일명}

인수로는 테이블명 또는 MYI파일을 지정한다. 복수 지정가능하다.
myisamchk옵션은 my.cnf파일의 [myisamchk]그룹에 기술할 수 있다.

myisamchk는 작업용 파일을 TMPDIR환경변수에 있는 디렉토리밑에 작성한다. (없는 경우는 /tmp디렉토리)
만약 파티션에 여유가 없을 경우에는 out of memory가 나올 수 있다.
그럴 때에는 --tmpdir옵션으로 작업용 파일을 두는 디렉토리를 지정해야한다.

메모리사이즈관련 옵션
--sort_buffer_size, --key_buffer_size, --read_buffer_size, --write_buffer_size

체크관련 옵션
--fast ( -F ), --check-only-changed ( -C ), --medium-check( -m) , --extend-check( -e )
--check (-c), --force( -f), --information( -i ), --read-only( -T ) , --update-state ( -U)

복구관련 옵션
복구할 때 myisamchk는 일시 작업용 파일인 .TMM(인덱스), .TMD(데이터)를 사용한다.
--recover(-r), --safe-recover( -o)
--backup( -B), --character-sets-dir=디렉토리, --correct-checksum, --data-file-length=사이즈(-D 사이즈), --extend-check(-e), --force(-f), --keys-used=정수( -k 정수), --max-record-length=길이,--parallel-recover(-p), --quick(-q), --set-collation=collation명, --sort-recover(-n), --tmpdir=디렉토리(-t 디렉토리), --unpack(-u)

기타옵션
--analyze(-a), --block-search=옵셋(-b옵셋), --description(-d), --set-auto-increment[=정수](-A정수) , --sort-index( -S) , --sort-records=정수(-R 정수), -- verbose(-v), --silent(-s), --version(-V), --help(-h)