MySQL의 iblog 파일은 정확히 무엇입니까


15

충돌 복구 절차에서 중요한 역할을하는 이러한 ibdata 파일을 이해하고 싶습니다. 웹에서 적절한 리소스를 찾을 수 없습니다.

답변:


17

ibdata1

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

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

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

그림 표현을 보려면 여기를 클릭하십시오

innodb_file_per_table 을 활성화하여 ibdata1에서 데이터 및 색인 페이지를 이혼 할 수 있습니다 . 이렇게하면 새로 작성된 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에서 테이블 데이터와 인덱스를 분리하는 방법에 대한 지난 기사입니다.

iblog 파일 (일명 ib_logfile0, ib_logfile1)

당신이 무엇을 알고 싶은 경우 ib_logfile0ib_logfile1위해, 그들은 InnoDB의 리두 로그입니다. mysqld가 정상적으로 종료 될 때까지 절대 지우거나 크기를 조정해서는 안된다 . mysqld가 충돌하면 mysqld를 시작하십시오. 그것은에서 읽 ib_logfile0ib_logfile1의 이중 쓰기 버퍼에 게시되지 않은 모든 데이터 변경 내용을 확인 ibdata1. 변경 사항을 재생 (재실행)합니다. 그들이 재생되고 저장되면, mysqld는 새로운 DB 연결을위한 준비가됩니다.


이 로그 파일에 공간이 어떻게 유지됩니까? "새로운 innodb 트랜잭션의 경우 동일한 로그 파일이 완전히 채워지면 어떻게 사용되는지 ..."
Uday

내 이전 의견은 ib_log 파일에 관한 것입니다 ....
Uday

1
@ Uday 로그 버퍼가 비워 질 때까지 iblog 파일에 공간이 유지되지 않습니다. 이는 로그 버퍼에 기록 된 정지 된 트랜잭션 변경 사항에 따라 로그 공간을 점유하고 해제하는 동적 프로세스입니다. 이러한 로그 파일은 거대한 데이터로드를 수행 할 때마다 완료되므로 "InnoDB : 로그 그룹 용량을 초과합니다"라는 Innodb 오류가 발생합니다. 즉, 로그 파일 크기가 더 커야합니다. 내 설명이 당신의 의심을 없애기를 바랍니다.
Gopinath

innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibd그리고 innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1그것을해야하지, 그 반대해야 하는가?
rabudde

1
@rabudde 이제 수정되었습니다. 다시 감사합니다 !!!
RolandoMySQLDBA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.