티스토리 뷰
* 개요
- 하드 디스크 용량이 꽉 차서
ERROR 1114 (HY000) at line 5602: The table 'Sample' is full
오류 발생시키며 더 이상 insert 불가
- 문제는 안 쓰는 테이블을 delete 또는 drop 해도 하드디스크가 남지 않는다는 것
=> ibdataX 파일의 용량이 줄어들지 않음.
- 관련 검색어 InnoDB ibdata1 never shrinks after data is removed
* 테이블을 지운다고 해서 ibdata 파일의 용량이 줄어 들지는 않는다고 함
http://www.mysqlkorea.com/gnuboard4/bbs/board.php?bo_table=community_03&wr_id=3458
https://askubuntu.com/questions/975429/mysql-is-stopping-because-of-ibdata1-file-size
- optimize 등 명령을 해도 마찬가지.
- delete from... 으로 불필요한 레코드 제거하여 DB 사용량을 줄이고,
해당 드라이브의 용량을 어떻게든 확보하면 (다른 프로그램을 지우든지...)
지워진 레코드 부분을 사용하게 되므로 다시 사용 가능함.
( 10 메가 정도 확보 후 재동작 확인 )
drop table 은 안됨 (기타 2 참고)
하지만 애초에 지울 테이블, 레코드 없거나, DB 저장 하드디스크에 용량을 확보할 방법이 없다면 해당없음.
* 유일한 방법은, 데이터를 백업하고 다시 스키마를 만드는 것.
https://vdachev.net/2007/02/22/mysql-reducing-ibdata1/
* 예방하는 방법은...
- 지워가면서 쓰는 테이블(로그 저장용 테이블...), 기타 쓸데 없는 테이블은 미리 정리하면 지워진 부분에 내용을 기록하게 되어 ibdata 파일이 커지는 것을 늦출 수 있음.
- 테이블 한계를 설정하거나 . .
- InnoDB 아닌 MyISAM 으로 만들거나 ...
- ibdata 파일을 테이블 별로 생성하는 방법 (innodb_file_per_table 옵션)
http://www.mysqlkorea.com/sub.html?mcode=manual&scode=01&m_no=21860&cat1=14&cat2=422&cat3=437&lang=k
https://stackoverflow.com/questions/35148069/mysql-table-data-physical-fragmentation
https://dba.stackexchange.com/questions/16341/how-do-you-remove-fragmentation-from-innodb-tables/16350?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
- 그밖에 단편화 방지 방법
http://www.mysqlkorea.com/sub.html?mcode=manual&scode=01&m_no=21911&cat1=14&cat2=422&cat3=448&lang=k
http://www.mysqlkorea.com/gnuboard4/bbs/board.php?bo_table=community_03&wr_id=4883
* 참고 : 테이블 사이즈 확인 쿼리
- 정확한 수치는 아니고, 추정치
* 기타
- 분할된 ibdataX 파일의 크기를 줄이는 방법
https://www.thegeekstuff.com/2016/02/mysql-innodb-file-per-table/
- maria db 단편화 제거 옵션?
https://mariadb.org/defragmenting-unused-space-on-innodb-tablespace/
* 기타 2
- ibdata 파일 내에서 Delete 로 지워진 레코드 공간은 재활용 하지만,
Drop 으로 테이블 통째로 날린 공간은 활용하지 않음
- 테이블이 너무 커 delete 보다 빠른 drop 으로 테이블 지우고 다시 생성했을땐 그 전에 있던 공간은 활용되지 않음.
그래서 drop 된 테이블을 다시 살려 delete 해보려는 시도도 했음.
https://serverfault.com/questions/103726/how-to-undo-drop-table
https://twindb.com/recover-after-drop-table-innodb_file_per_table-is-off/
그러나 복잡한것 같아 그냥 포기.
* 기타3 : 오라클 tablespace
'SW개발 > Database' 카테고리의 다른 글
MySQL 5.6 -> MariaDB 10.0 실패 (0) | 2018.04.23 |
---|---|
mysql 백업 / 파일 분할해서 dump 하는 방법 (0) | 2018.04.04 |
MySQL Full-Text 검색 / match against (0) | 2018.01.17 |
MySql 5.1 to 5.6 Upgrade (0) | 2017.12.27 |
mysql regexp 를 like 처럼 전체구간 일치로 검색 하기 (0) | 2017.11.27 |