14.8.2.1 InnoDB가 시작되었을 때 호환성 검사
InnoDB는 ib-file 세트를 열 때 발생할 수있는 충돌 또는 데이터 손상을 방지하기 위해 그 ib-file 세트에서 사용되는 파일 형식을 완벽하게 지원할 수 있는지 확인합니다 . 시스템 충돌 또는 "빠른 종료"(즉, innodb_fast_shutdown
가 0보다 큰)의 후에 다시 시작 된 경우는 현재의 소프트웨어에게는 "너무 새로운 '형식의 데이터 구조 (Redo 또는 Undo 항목과 이중 쓰기 페이지 등)가 디스크에 존재할 가능성이 있습니다. 이러한 데이터 구조에 액세스하면 복구 과정에서 데이터 파일의 심각한 손상이 발생할 수 있습니다. 파일 형식의 시작 검사는 어떻게 복구 프로세스가 시작되면보다 먼저 실행되기 때문에 새로운 테이블과의 일관성 문제와 MySQL 서버를 시작할 때 문제가 해결됩니다.
버전 InnoDB 1.0.1에서 시스템 테이블 스페이스는 ib-file 세트의 일부인 하나의 테이블 스페이스 내의 테이블 중 하나에 의해 사용되는 "최고의"파일 형식의 식별자 또는 태그를 기록 합니다. 이 파일 형식 태그에 대한 검사는 구성 매개 변수 innodb_file_format_check
(기본적으로 ON
)에 의해 제어됩니다.
시스템 테이블 스페이스 내의 파일 형식 태그가 현재 실행중인 특정 소프트웨어에서 지원하는 가장 높은 버전보다 새로운하거나 높은 값이며, 한편 innodb_file_format_check
가 ON
인 경우는 서버가 기동 된 때 다음 오류가 발행됩니다.
InnoDB : Error : the system tablespace is in a file format that this version does not support
innodb_file_format
파일 형식 이름으로 설정 할 수 있습니다. 그러면 지정된 파일 형식이 현재 소프트웨어에서 지원되지 않는 경우 InnoDB가 시작되지 않습니다. 또한 "고위 경계 값 '도 지정된 값으로 설정됩니다. innodb_file_format_check
을 설정하는 기능은 ib-file 세트 내의 모든 테이블을 수동으로 "다운 그레이드"하는 경우 ( Downgrading the InnoDB Storage Engine 에 설명되어 있습니다)에 (InnoDB 릴리스에서) 도움이됩니다. 그러면 나중에 이전 버전의 InnoDB를 사용하여 ib-file 세트에 액세스하려면 시작 파일 형식의 체크를 사용할 수 있습니다.
일부 한정된 상황에서 서버를 시작하고 "너무 새로운"형식 (사용하는 소프트웨어에서 지원되지 않는 형식)의 ib-file 세트를 사용하는 것이 필요하게되는 경우가 있습니다. 구성 매개 변수 innodb_file_format_check
를 OFF
로 설정하면, InnoDB는 데이터베이스를 엽니 다하지만 오류 로그에 다음과 같은 경고 메시지를 발행합니다.
InnoDB : Warning : the system tablespace is in a file format that this version does not support
이에 따라 복구 프로세스의 실행이 허용되고 마지막 종료 충돌 또는 "빠른 종료"인 경우 데이터베이스가 손상 될 수 있기 때문에 이것은 매우 위험한 설정입니다. innodb_file_format_check
를 OFF
로 설정하는 것은 마지막 종료가 innodb_fast_shutdown=0
에서 실행 된 것이 확실 할만큼하고 기본적으로 복구 프로세스가 발생하지 않도록하십시오. 릴리스에서는이 매개 변수 설정은 OFF
에서 UNSAFE
에 이름이 변경 될 수 있습니다. (단, 추가 파일 형식을 지원하는 InnoDB의 새로운 자료가 공개되기 전까지는 시작 체크를 해제했다고해도 실제로는 「안전합니다. ")
매개 변수 innodb_file_format_check
은 데이터베이스가 열릴 때의 동작에만 영향을주고, 그 후에는 영향을주지 않습니다. 반대로, 매개 변수 innodb_file_format
(이것은 특정 형식을 사용합니다)는 활성화되어있는 형식으로 새 테이블을 만들 수 있는지 여부 만 결정하고 데이터베이스를 열 수 있는지 여부에 영향을 주지 않습니다.
파일 형식 태그는 "고위 경계 값"이기 때문에 "더 높은"형식의 테이블을 생성하거나 기존 테이블을 읽거나 쓰기 위해 액세스되는 (그 형식이 지원되는 가정 합니다)와 서버가 시작 된 후에 증가합니다. 실행중인 소프트웨어가 지원하는 형식보다 높은 형식의 기존의 테이블에 액세스 한 경우 섹션 14.8.2.2 "테이블이 열릴 때 호환성 검사" 에 설명 된대로 시스템 테이블 공간 태그는 업데이트되지 않지만 테이블 수준의 호환성 검사가 적용됩니다 (또한 오류가 발행됩니다). 고위 경계 값이 업데이트 될 때마다 innodb_file_format_check
값도 업데이트되기 때문에 명령 SELECT @@innodb_file_format_check;
에서는 현재 열려있는 ib-file 세트의 테이블에 의해 사용되어 현재 실행중인 소프트웨어에 의해 지원되는 것을 알고있는 최신 파일 형식의 이름이 표시됩니다.
이 동작을 가장 적절히 설명하기 위해 표 14.4 "InnoDB 데이터 파일 호환성과 관련된 InnoDB 매개 변수" 에서 설명되는 시나리오를 생각해 보겠습니다. 있는 미래 버전의 InnoDB가 Cheetah 형식을 지원하고 ib-file 세트가 버전에서 사용되어 왔다고합니다.
표 14.4 InnoDB 데이터 파일 호환성과 관련된 InnoDB 매개 변수
innodb 파일 형식 체크 | innodb 파일 형식 | ib-file 세트에서 사용되는 최대 파일 형식 | InnoDB에서 지원하는 최대 파일 형식 | 결과 |
---|---|---|---|---|
OFF | Antelope 또는 Barracuda | Barracuda | Barracuda | 데이터베이스를 열 수 있습니다. Antelope 또는 Barracuda 파일 형식을 필요로하는 테이블을 만들 수 있습니다 |
OFF | Antelope 또는 Barracuda | Cheetah | Barracuda | 데이터베이스에는 "너무 새로운 '형식의 파일이 포함되어 있기 때문에 데이터베이스를 열면 경고가 표시됩니다. Antelope 또는 Barracuda 파일 형식의 테이블을 만들 수 있습니다. Cheetah 형식의 테이블에는 액세스 할 수 없습니다 |
OFF | Cheetah | Barracuda | Barracuda | 데이터베이스를 열 수 없습니다. innodb_file_format 을 Cheetah에 설정할 수 없습니다 |
ON | Antelope 또는 Barracuda | Barracuda | Barracuda | 데이터베이스를 열 수 있습니다. Antelope 또는 Barracuda 파일 형식의 테이블을 만들 수 있습니다 |
ON | Antelope 또는 Barracuda | Cheetah | Barracuda | 데이터베이스에는 "너무 새로운"형식 (Cheetah) 파일이 포함되어 있기 때문에 데이터베이스를 열 수 없습니다 |
ON | Cheetah | Barracuda | Barracuda | 데이터베이스를 열 수 없습니다. innodb_file_format 을 Cheetah에 설정할 수 없습니다 |