티스토리 뷰

대부분의 DB가 order by, group by 등의 소팅 연산을 할때 in-memory sort or temp-file sort를 하게 된다.

MySQL의 경우 다음과 같은 에러 메시지가 뜨면 ..

날짜 구간이 길어짐에 따라 에러가 다음과 같이 발생하였다.

Mysql::Error: Incorrect key file for table ‘/tmp/#sql_61a9_0.MYI’;
try to repair it

  • 먼저 해 볼 것 : ' analyze table [테이블 명] ' 으로 테이블 상태가 깨진 것인지 확인 해본다.

  • 그다음 알아본 것은 mysql 의 my.conf 에서 key_buffer 크기를 늘려봄
    • status : error 로 깨져있었음 -> 'repair table [테이블 명] ' 으로 복구 시도 !
    • BUT 여전히 안됨..

  • 결국 해본 것은..
    • key_buffer:16M 에서 256M으로 수정
    • BUT 여전히 안됨..

=> 해결 :  유닉스 서버 공간 부족..

  • 저장하는 공간 확인해보기.
    • df -H : 서버의 공간을 확인해보니 /가 77% 였다. 결국 tmp를 설정 안하면 저장되는 곳이 / 인데 공간 부족이었던것..
    • /data1 이 1%사용이라 여기에 /data1/tmp를 만들고 my.conf 에서 tmpdir = /data1/tmp/ 로 설정해주었다.
    • 잘 동작함...tmp를 확인해 보니 값을 가져 올때 tmp에 파일을 임시로 생성했다가 다 가져오면 지우는 것을 알 수 있었다.