내 / var / lib / mysql 디렉토리에있는 ibdata1 파일은 무엇입니까?


32

Webmin 제어판에 로그인하면 거의 모든 디스크 공간이 가득 찼습니다. 시스템에서 10 개의 가장 큰 파일 / 디렉토리를 검색 한 결과 ibdata1이라는 파일이 약 94GB의 공간을 차지한다는 것을 알았습니다. 내 / var / lib / mysql 디렉토리에 있습니다.

ibdata1의 기능은 무엇입니까? 제거해도 안전합니까? 내 가정은 그것이 일종의 덤프라고 생각하지만 그것은 단지 추측 일뿐입니다.

답변:


38

파일 ibdata1은 InnoDB 인프라의 시스템 테이블 스페이스입니다.

InnoDB에 필수적인 정보를위한 여러 클래스가 포함되어 있습니다.

  • 테이블 데이터 페이지
  • 테이블 인덱스 페이지
  • 데이터 사전
  • MVCC 제어 데이터
    • 우주 취소
    • 롤백 세그먼트
  • 이중 쓰기 버퍼 (OS 캐싱을 피하기 위해 백그라운드에서 작성된 페이지)
  • 버퍼 삽입 (보조 인덱스로 변경)

ibdata1의 위치는 InnoDB Universe (오른쪽)에 있습니다.

InnoDB 아키텍처

innodb_file_per_tableibdata1 을 활성화하여 데이터 및 색인 페이지를 분리 할 수 ​​있습니다 . 이렇게하면 새로 생성 된 InnoDB 테이블이 외부 파일 에 데이터 및 인덱스 페이지를 저장 합니다..ibd

  • datadir 은 / var / lib / mysql입니다.
  • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;, 생성 /var/lib/mysql/mydb/mytable.frm
    • innodb_file_per_table 활성화, 데이터 / 인덱스 페이지 저장 /var/lib/mysql/mydb/mytable.ibd
    • innodb_file_per_table 비활성화, ibdata1에 저장된 데이터 / 인덱스 페이지

InnoDB 테이블이 어디에 저장 되든지 InnoDB의 기능을 사용하려면 ACID 준수트랜잭션 격리 를 지원 하기 위해 테이블 ​​메타 데이터를 찾고 MVCC 정보를 저장 및 검색 해야 합니다.

다음은 ibdata1에서 테이블 데이터와 인덱스를 분리하는 방법에 대한 지난 기사입니다.

다음에 무엇을할지

ibdata1을 계속해서 모든 것을 저장할 수는 있지만 LVM 스냅 샷을 만드는 것은 실제적인 일입니다 (개인의 견해).

My StackOverflow 포스트를 사용해야하며 해당 파일을 영구적으로 축소해야합니다.

이 쿼리를 실행하십시오 :

SELECT 
    ((POWER(1024,3)*94 - InnoDBDiskDataAndIndexes))/POWER(1024,3) SpaceToReclaim
FROM
(SELECT SUM(data_length+index_length) InnoDBDiskDataAndIndexes
FROM information_schema.tables WHERE engine='InnoDB') A;

InnoDB Cleanup을 적용한 후 얼마나 많은 공간을 확보 할 수 있는지 알려줍니다.


입력 해 주셔서 감사합니다. 이후 디스크 할당량이 완전히 채워졌습니다. 게시물에있는 조언을 수행하기 전에 여유 공간이 필요합니까? SO에 대한 귀하의 원래 게시물은 SQL 덤프 수행에 대해 언급하지만, 아마도 아무데도 ~ 90GB 파일을 생성 할 것입니다.
James

mysqldump는 인덱스가 아닌 데이터 페이지의 논리적 표현 만 할 것이다. 데이터를 덤프하려면 다른 디스크 마운트 (원격 서버)가 필요합니다.
RolandoMySQLDBA

9
나를 위해 91.25350952148438을 반환합니다 SpaceToReclaim. MB 단위입니까? 퍼센트? 바이트?
Isaac Isaac

나는 이것이 너무 오래되었다는 것을 안다. 그러나이 문제로 여기에 오는 사람 94ibdata1파일 크기 ( GB)로 숫자를 바꿔야 SpaceToReclaim하며 크기는 GB로 표시됩니다.
5


2

기본적으로 innodb를 MySQL 엔진으로 사용하면 모든 데이터베이스가 ibdata1에 저장됩니다 . 또한 ib_logfile0 및 ib_logfile1 로그 파일이 있습니다. 해당 파일을 삭제하지 마십시오.


내 서버에서 해당 파일을 삭제하는 것은 무엇입니까?
Frank
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.