안녕하세요. 운영중인 서버에서
이상한? db파일이 생겨서 찾아봤더니 고아 중간 테이블(?)이 생겨서 용량을 과다 먹고있더군요..
해결방법을 찾아 트러블슈팅하는법을 공유해봅니다.
고아 중간 테이블은 테이블 공간이 비어 있어도 테이블 공간을 제거하지 못하게하고 일반적으로 불필요한 공간을 차지합니다.
고아 테이블 식별하기
먼저 mysql 콘솔로 접근한뒤 아래 쿼리를 날려주세요.
SELECT * FROM INFORMATION_SCHEMA . INNODB_SYS_TABLES WHERE NAME LIKE '%#sql%' ;
고아 중간 테이블을 제거하려면 다음을 수행합니다.
#sql-*.frm
고아 중간 테이블의 기본 이름과 일치 하도록 파일(데이터베이스 디렉토리에 있음)의 이름을 바꿉니다. 예를 들면 다음과 같습니다.
앞서 올린 frm 파일을 테이블 이름과 동일하도록 변경해줍니다.
여기서는 #sql-3580_4.frm -> #sql-ib335-2772942774.frm 이 되겠네요.
mv #sql-3580_4.frm #sql-ib335-2772942774.frm
이렇게 frm과 ibd를 맞춰줍니다.
그리고 다시 mysql 콘솔로 들어가서
DROP TABLE `#mysql50## [파일이름]`;
파일이 삭제된것을 확인할 수 있습니다.
참조 : https://mariadb.com/kb/en/innodb-data-dictionary-troubleshooting/InnoDB Data Dictionary TroubleshootingTroubleshooting the InnoDB Data Dictionary.MariaDB KnowledgeBase[Reference] : 달소, 「서버포럼 – MySQL(MariaDB) ERROR 1016: Can’t open file: ‘x.ibd’. (errno: 1) 해결하기.」 https://svrforum.com/?document_srl=77544&mid=develop&act=dispBoardContent.