4.6.3 myisamchk - MyISAM 테이블 유지 보수 유틸리티
myisamchk 유틸리티는 데이터베이스 테이블에 대한 정보를 얻거나 데이터베이스 테이블 검사, 복구 또는 최적화를 수행 할 수 있습니다. myisamchk는 MyISAM
테이블 (데이터 및 인덱스의 저장을위한 .MYD
와 .MYI
파일이있는 테이블)에 작동합니다.
또한 CHECK TABLE
및 REPAIR TABLE
문을 사용하여 MyISAM
테이블을 체크하고 복구 할 수 있습니다. 섹션 13.7.2.2 "CHECK TABLE 구문」 및 섹션 13.7.2.5 "REPAIR TABLE 구문" 을 참조하십시오.
myisamchk를 파티션 된 테이블에 사용하는 것은 지원되지 않습니다.
테이블의 복구 작업을 수행하기 전에 테이블을 백업하는 것이 좋습니다. 상황에 따라이 작업을 위해 데이터 손실이 발생할 수 있습니다. 가능한 원인으로는 파일 시스템의 오류 등이 있지만 이에 국한되지 않습니다.
myisamchk는 다음과 같이 시작합니다.
shell> myisamchk [ options ] tbl_name ...
options
는 myisamchk에 실행시키는 내용을 지정합니다. 다음 섹션에서는 이러한 설명합니다. 또한 myisamchk --help를 실행하여 옵션의 목록을 얻을 수 있습니다.
옵션을 지정하지 않으면, myisamchk는 기본 동작으로 사용자의 테이블을 확인합니다. 자세한 정보를 얻거나 myisamchk에 시정 조치를 취하게하는 다음의 논의에 설명 된대로 옵션을 지정하십시오.
tbl_name
은 점검 또는 수리 데이터베이스 테이블입니다. 데이터베이스 디렉토리 외부에서 myisamchk를 시작하려면 데이터베이스 디렉토리 경로를 지정해야합니다. 이것은 myisamchk는 데이터 디렉토리의 위치를 전혀 모르기 때문입니다. 사실, myisamchk는 작업하려는 파일이 데이터베이스 디렉토리에 있는지 고려하지 않습니다. 데이터베이스 테이블에 응대하는 파일을 다른 위치로 복사하여 이에 해당 파일에 대해 복구 작업을 수행 할 수 있습니다.
필요에 따라 myisamchk 명령 줄에서 여러 테이블을 지정할 수 있습니다. 인덱스 파일 ( .MYI
접미사가 붙은 파일)을 지명하여 테이블을 지정할 수도 있습니다. 그러면 패턴 *.MYI
을 사용합니다. 디렉토리의 모든 테이블을 지정하는 것도 가능합니다. 예를 들어 데이터베이스 디렉토리에 있다면 다음과 같이 디렉토리의 모든 MyISAM
테이블을 확인할 수 있습니다.
shell> myisamchk *.MYI
데이터베이스 디렉토리 이외의 위치에서 디렉토리 경로를 지정하여 모든 테이블을 확인할 수 있습니다.
shell> myisamchk /path/to/database_dir/ *.MYI
MySQL 데이터 디렉토리 경로에 와일드 카드를 지정하여 모든 데이터베이스의 모든 테이블을 확인하실 수 있습니다.
shell> myisamchk /path/to/datadir/*/* .MYI
모든 MyISAM
테이블을 체크하는 것이 좋습니다 방법은 :
shell> myisamchk --silent --fast /path/to/datadir/*/* .MYI
모든 MyISAM
테이블을 검사하여 손상된 것을 복구하려면 다음 명령을 사용할 수 있습니다.
shell>myisamchk --silent --force --fast --update-state \
--key_buffer_size=64M --myisam_sort_buffer_size=64M \
--read_buffer_size=1M --write_buffer_size=1M \
/path/to/datadir/*/* .MYI
이 명령은 64M 바이트 이상의 여유가있는 것이 전제입니다. myisamchk와 메모리 할당 대한 자세한 내용은 섹션 4.6.3.6 "myisamchk 메모리 사용량" 을 참조하십시오.
myisamchk 사용에 대한 자세한 내용은 섹션 7.6 "MyISAM 테이블의 보수와 크래쉬 복구" 를 참조하십시오.
myisamchk의 실행 중에 다른 프로그램이 테이블을 사용하지 않는 것을 보증해야합니다. 이를위한 가장 효과적인 방법은 myisamchk가 실행되는 동안 MySQL 서버를 종료하거나 myisamchk가 대상으로하는 모든 테이블을 잠그는 방법입니다.
그렇지 않으면, myisamchk를 시작할 때 다음과 같은 오류가 나타날 수 있습니다.
warning : clients are using or have not closed the table properly
이것은 다른 프로그램 (mysqld 서버 등)이 테이블을 업데이트하고 파일을 아직 닫지 않았거나 파일을 제대로 닫지 않고 비정상적으로 종료 된 테이블을 확인하려고하는 것을 의미합니다. 이 경우 하나 이상의 MyISAM
테이블이 손상 될 수 있습니다.
mysqld가 실행중인 경우, FLUSH TABLES
를 사용하여 메모리에 버퍼링 된 테이블에 변경 사항이 있으면, 그것을 플래시하도록 명령해야합니다. 그 후, myisamchk의 실행 중에 다른 프로그램이 테이블을 사용하지 않는 것을 보증해야합니다.
그러나이 문제를 해결하는 가장 쉬운 방법은 myisamchk 대신 CHECK TABLE
을 사용하여 테이블을 체크하는 방법입니다. 섹션 13.7.2.2 "CHECK TABLE 구문" 을 참조하십시오.
myisamchk는 다음 옵션을 지원합니다. 이들은 명령 행 또는 옵션 파일의 [myisamchk]
그룹에서 지정할 수 있습니다. MySQL 프로그램에서 사용되는 옵션 파일에 대한 자세한 내용은 섹션 4.2.6 "옵션 파일 사용" 을 참조하십시오.
표 4.12 myisamchk
옵션
형식 | 설명 | 도입 | 비추천 |
---|---|---|---|
--analyze | 키 값의 분포를 분석 | ||
--backup | .MYD 파일의 백업을 file_name-time.BAK로 작성 | ||
--block-search | 지정된 오프셋의 블록이 속한 레코드를 검색 | ||
--check | 테이블에 오류가 없는지 확인 | ||
--check-only-changed | 마지막에 행해진 검사 이후에 변경된 테이블 만 체크 | ||
--correct-checksum | 테이블의 체크섬 정보 수정 | ||
--data-file-length | 데이터 파일의 최대 길이 (데이터 파일이 꽉 찼을 때 다시 작성하는 경우) | ||
--debug | 디버깅 로그를 작성한다 | ||
--decode_bits | Decode_bits | ||
--defaults-extra-file | 일반 옵션 파일 이외에 옵션 파일을 읽을 | ||
--defaults-file | 지명 된 옵션 파일 만 읽을 | ||
--defaults-group-suffix | 옵션 그룹의 접미사 값 | ||
--description | 테이블 설명 정보를 출력 | ||
--extend-check | 데이터 파일의 모든 행을 복구하는 복구를 시도 매우 철저한 테이블을 검사 또는 복구를 실행 | ||
--fast | 제대로 닫히지 않은 테이블 만 체크 | ||
--force | myisamchk가 오류를 테이블에서 발견 한 경우 자동으로 복구 작업을 수행한다. | ||
--force | 오래된 임시 파일을 덮어. -r 옵션이나 -o 옵션과 함께 사용 | ||
--ft_max_word_len | FULLTEXT 인덱스 단어의 최대 길이 | ||
--ft_min_word_len | FULLTEXT 인덱스 단어의 최소 길이 | ||
--ft_stopword_file | 내장의 목록이 아니라이 파일에서 중지 단어를 사용 | ||
--HELP | 도움말 메시지를 표시하고 종료 | ||
--help | 도움말 메시지를 표시하고 종료 | ||
--information | 체크 된 테이블의 통계를 출력 | ||
--key_buffer_size | MyISAM 테이블의 인덱스 블록에 사용하는 버퍼의 크기 | ||
--keys-used | 어떤 인덱스를 업데이트 하는지를 나타내는 비트 값 | ||
--max-record-length | myisamchk가 기억하는 메모리를 확보 할 수없는 경우, 지정된 길이를 초과하는 행을 건너 | ||
--medium-check | --extend-check 조작보다 빠른 검사를 실행 | ||
--myisam_block_size | MyISAM 인덱스 페이지에 사용되는 블록 크기. | ||
--myisam_sort_buffer_size | REPAIR 실행시 인덱스 정렬 또는 CREATE INDEX 또는 ALTER TABLE에 의한 인덱스 생성시 할당 된 버퍼 | 5.6.9 | |
--no-defaults | 옵션 파일을 읽지 | ||
--parallel-recover | -r 및 -n과 동일한 기술을 사용하지만, 다른 스레드를 사용하여 모든 키를 동시에 생성 (β) | ||
--print-defaults | 기본 출력 | ||
--quick | 데이터 파일을 변경하지 않는다 복구 속도를 향상. | ||
--read_buffer_size | 순차적 스캔을 실행하는 각 스레드는 스캔하는 각 테이블에 대해이 크기의 버퍼를 할당 | ||
--read-only | 테이블을 검사 된 것으로 표시하지 | ||
--recover | 고유없는 고유 키를 제외한 모든 복구 할 복구를 실행 | ||
--safe-recover | 모든 행을 순서대로 읽고 검색된 행에 따라 모든 인덱스 트리를 업데이트하는 오래된 복구 방법을 사용하여 복구 | ||
--set-auto-increment | 새 레코드가 지정된 값으로 시작하도록 AUTO_INCREMENT 넘버링을 강제 | ||
--set-collation | 테이블 인덱스의 정렬에 사용할 데이터 정렬을 지정 | ||
--silent | 자동 모드 | ||
--sort_buffer_size | REPAIR 실행시 인덱스 정렬 또는 CREATE INDEX 또는 ALTER TABLE에 의한 인덱스 생성시 할당 된 버퍼 | 5.6.9 | |
--sort-index | 인덱스 트리 블록을 높은 것부터 낮은 항목 순으로 정렬 | ||
--sort_key_blocks | sort_key_blocks | ||
--sort-records | 특정 인덱스에 따라 레코드를 정렬 | ||
--sort-recover | 임시 파일의 크기가 매우 커서도 키의 해결에 정렬을 사용하는 것이 myisamchk에 강제 | ||
--stats_method | MyISAM 인덱스 통계 컬렉션 코드에서 NULL의 처리 방법을 지정 | ||
--tmpdir | 임시 파일의 정렬에 사용하는 디렉토리 경로 | ||
--unpack | myisampack으로 압축 된 테이블의 압축을 풉니 | ||
--update-state | 정보를 .MYI 파일에 저장하고 언제 테이블이 체크되었는지 및 테이블 충돌 여부를 확인합니다. | ||
--verbose | 중복 모드 | ||
--version | 버전 정보를 출력하고 종료 | ||
--write_buffer_size | 쓰기 버퍼 크기 |