즉, ibdata1
축소되지는 MySQL을의 특히 짜증나는 기능입니다. ibdata1
파일은 실제로 당신이 모든 데이터베이스를 삭제 파일을 제거하고 덤프를 다시로드하지 않는 한 축소 할 수 없습니다.
그러나 인덱스를 포함한 각 테이블이 별도의 파일로 저장되도록 MySQL을 구성 할 수 있습니다. 그렇게하면 ibdata1
커지지 않을 것입니다. Bill Karwin의 의견 에 따르면 이것은 MySQL 5.6.6 버전에서 기본적으로 활성화되어 있습니다.
얼마 전에 나는 이것을했다. 그러나 각 테이블에 대해 별도의 파일을 사용하도록 서버를 설정 my.cnf
하려면이를 활성화하기 위해 변경해야합니다 .
[mysqld]
innodb_file_per_table=1
http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html
공간을 확보 ibdata1
하려면 실제로 파일을 삭제해야합니다.
- 수행합니다
mysqldump
모든 데이터베이스, 프로 시저, 트리거 등의 제외 mysql
및 performance_schema
데이터베이스
- 위의 두 데이터베이스를 제외한 모든 데이터베이스를 삭제하십시오.
- MySQL을 중지
- 삭제
ibdata1
및 ib_log
파일
- mysql 시작
- 덤프에서 복원
5 단계에서 MySQL을 시작하면 ibdata1
및 ib_log
파일이 다시 생성됩니다.
이제 당신은 갈 수 있습니다. 분석 할 새 데이터베이스를 작성하면 테이블 ibd*
이에있는 파일이 아닌 별도의 파일에 ibdata1
있습니다. 보통 곧 데이터베이스를 ibd*
삭제 하면 파일이 삭제됩니다.
http://dev.mysql.com/doc/refman/5.1/en/drop-database.html
아마 이것을 보았을 것입니다 :
http://bugs.mysql.com/bug.php?id=1341
명령을 사용 ALTER TABLE <tablename> ENGINE=innodb
하거나 OPTIMIZE TABLE <tablename>
ibdata1에서 데이터 및 색인 페이지를 추출하여 파일을 분리 할 수 있습니다. 그러나 위의 단계를 수행하지 않으면 ibdata1이 축소되지 않습니다.
에 관해서는 information_schema
, 그것은 떨어질 필요가 없습니다. 실제로는 테이블이 아니라 읽기 전용 뷰입니다. 그리고 데이터베이스 디렉토리조차도 그들과 관련된 파일이 없습니다. (가) informations_schema
메모리 DB 엔진을 사용하고 떨어 정지에 재생됩니다 / mysqld에의 다시 시작합니다. https://dev.mysql.com/doc/refman/5.7/en/information-schema.html을 참조 하십시오 .