본문 바로가기

서버운영 노트

MySQL 용량 초과로 인한 에러

MySQL 용량 초과로 인한 에러







2013-11-07 오전 10시경, J 고객님이 주신 문의 입니다.

 

 

Question

종종 DB 접속 오류 메시지가 뜨면서 서버 내 사이트 접속이 안됩니다.

그때마다 서버 재부팅 요청을 하면 해결 되었는데 이번 오류 현상은 해결이 안되네요.

원인이 뭘까요? 지난번 비슷한 문제로 메모리를 증설하는 등 조치를 취했는데도 이런 문제가 발생하네요.

 

 

Answer

고객님 이용 중인 MySQL Error log를 확인해보니 Disk에 여유 공간이 없었습니다.

/usr 파티션이 100% 사용 중인 상태라 에러가 발생된 것 입니다.

우선 용량을 많이 차지하는 MySQL Bin log들을 몇 개 비워드려 정상 구동될 수 있도록 용량 확보해드렸습니다.

추가적으로 Apach log도 확인 후 비워주시면 좀 더 확보가 가능할 것으로 보입니다.

고객님 파티션의 /usr/local/ 사용량을 참고해보시기 바랍니다.

 

 

 

Tip

MyServer 사이즈, 쿼리(Query)문을 이용해 주기적으로 관리해보세요!

 

Database 사용량 체크 쿼리문

SELECT

           count(*) NUM_OF_TABLE,

           table_schema,concat(round(sum(table_rows)/1000000,2),'M') rows,

           concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA,

           concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx,

           concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size,

           round(sum(index_length)/sum(data_length),2) idxfrac

FROM information_schema.TABLES

GROUP BY table_schema

ORDER BY sum(data_length+index_length) DESC LIMIT 10;

 


Table 사용량 체크 쿼리문

SELECT

    table_name,

    table_rows,

    round(data_length/(1024*1024),2) as 'DATA_SIZE(MB)',

    round(index_length/(1024*1024),2) as 'INDEX_SIZE(MB)'

FROM information_schema.TABLES

where table_schema = '데이터베이스이름'

GROUP BY table_name

ORDER BY data_length DESC

LIMIT 10;