본문 바로가기
Database/MYSQL

MySQL -myisamchk: error: myisam_sort_buffer_size is too small 대처

by 반화넬 2018. 1. 30.
반응형



큰용량의 테이블의 경우 myisamchk 실행시 발생되는 에러입니다.

myisamchk: error: myisam_sort_buffer_size is too small
MyISAM-table 'Table_name.MYI' is not fixed because of errors
Try fixing it by using the --safe-recover (-o), the --force (-f) option or by not using the --quick (-q) flag


# 실행 방식
myisamchk -r -q TABLE.MYI --sort_buffer_size=2G

myisamchk -r -f -t /var/tmp Table_name.MYI --sort_buffer_size=16G 


# 설명
> tmp 파티션의 용량이 작을경우 FULL 에러 발생 가능합니다.
> 실행 가능할때까지 용량을 증가시켜야 합니다.(2GB, 4GB, 6GB ....)


# 옵션설명
--tmpdir= dir_name , -t dir_name (임시 파일을 저장하는 데 사용할 디렉토리 경로.  이것이 설정되어 있지 않으면, myisamchk 는 TMPDIR 환경 변수의 값을 사용합니다.  --tmpdir 은 임시 파일을 만드는 데 라운드 로빈 방식으로 연속적으로 사용되는 디렉토리 경로 목록으로 설정할 수 있습니다.  디렉토리 이름 사이의 구분자 문자는 Unix에서는 콜론 (:) ; Windows에서는 세미콜론 ( ; )입니다)
--recover , -r (고유하지 않은 고유 한 키를 제외한 거의 모든 문제를 수정할 수있는 복구를 수행하십시오 ( MyISAM 테이블의 오류는 극히 MyISAM ).  테이블을 복구하려면 먼저 시도하는 옵션입니다.  myisamchk에서 --recover 사용하여 테이블을 복구 할 수 없다고보고 한 경우에만 --safe-recover 시도해야합니다.  드문 경우 --recover 가 실패하면 데이터 파일은 그대로 유지됩니다)
--quick , -q (데이터 파일이 아닌 인덱스 파일 만 수정하여 빠른 복구를 달성하십시오.  이 옵션을 두 번 지정하면 myisamchk 가 중복 키의 경우 원본 데이터 파일을 수정하게 할 수 있습니다)
--force , -f (중단하는 대신 이전 중간 파일 (이름이 tbl_name .TMD 파일)을 겹쳐 tbl_name.TMD )

# 주의사항

서버의 용량이 8G 등일 경우 해당 용량을 초과해서 실행시 서버장애가 발생 할수 있습니다.
> 서버 : 8G

> 실행 : 16G <= 장애 발생 가능함


# 추가 TMP 디렉토리의 용량 체크 하세요

  myisamchk -r -f -q --tmpdir=/var/tmp TABLE.MYI --sort_buffer_size=4G



반응형