14.10.2.1 Проверка совместимости при запуске InnoDB
Для предотвращения возможных сбоев или повреждения данных при открытии набора файлов ib-InnoDB проверяет, что он может полностью поддерживать используемые форматы файлов в этом наборе. Если система перезапускается после сбоя или “быстрого завершения” (т.е., innodb_fast_shutdown больше нуля), могут существовать структуры данных на диске (такие как записи редо или андо, или страницы doublewrite), которые имеют формат “слишком новый” для текущего программного обеспечения. Во время процесса восстановления серьезные повреждения могут быть нанесены файлам данных, если к этим структурам данных будет обращаться. Проверка формата файла при запуске выполняется до начала любого процесса восстановления, предотвращая проблемы согласованности с новыми таблицами или проблемы при запуске сервера MySQL.
Начиная с версии InnoDB 1.0.1, таблицы системы записывают идентификатор или метку для “наиболее” используемого формата файла любой таблицей в любом из табличных пространств, которые являются частью набора файлов ib. Проверки против метки формата файла контролируются параметром конфигурации innodb_file_format_check, который имеет значение ON по умолчанию.
Если метка формата файла в таблице системы новее или выше, чем самая последняя поддерживаемая версия конкретного исполняемого программного обеспечения, и если innodb_file_format_check имеет значение ON, при запуске сервера выдается следующая ошибка:
InnoDB: Error: the system tablespace is in a
file format that this version doesn't support
Вы также можете установить innodb_file_format в имя формата файла. Это предотвращает запуск InnoDB, если текущее программное обеспечение не поддерживает указанный формат файла. Также устанавливается “максимальное значение” в указанное вами значение. Возможность установить innodb_file_format_check полезна (при будущих выпусках), если вы вручную “снижаете версию” всех таблиц в наборе файлов ib. Затем вы можете полагаться на проверку формата файла при запуске, если впоследствии вы будете использовать более старую версию InnoDB для доступа к набору файлов ib.
В некоторых ограниченных случаях вам может потребоваться запустить сервер и использовать набор файлов ib, который имеет новый формат файла, не поддерживаемый используемым вами программным обеспечением. Если вы установите параметр конфигурации innodb_file_format_check в значение OFF, InnoDB откроет базу данных, но выведет это сообщение об ошибке в журнале ошибок:
InnoDB: Warning: the system tablespace is in a
file format that this version doesn't support
Это опасное значение, так как оно позволяет выполнить процесс восстановления, что может привести к повреждению базы данных, если предыдущее завершение было неожиданным выходом или “быстрым завершением”. Вы должны установить innodb_file_format_check в значение OFF только если вы уверены, что предыдущее завершение было выполнено с помощью innodb_fast_shutdown=0, так что по существу не произойдет процесс восстановления.
Параметр innodb_file_format_check влияет только на то, что происходит при открытии базы данных, а не впоследствии. Напротив, параметр innodb_file_format (который включает определенный формат) определяет только возможность создания новой таблицы в включенном формате и не влияет на возможность открытия базы данных.
Метка формата файла — это “максимальное значение”, и она увеличивается после запуска сервера, если создается таблица с “более высоким” форматом или к существующей таблице обращаются для чтения или записи (при условии, что ее формат поддерживается). Если вы обращаетесь к существующей таблице в формате, более высоком, чем формат, поддерживаемый работающим программным обеспечением, метка тега в таблице системы не обновляется, но применяется проверка совместимости на уровне таблиц (и выдается ошибка), как описано в Разделе 14.10.2.2 «Проверка совместимости при открытии таблицы». Всякий раз, когда максимальное значение обновляется, значение innodb_file_format_check также обновляется, поэтому команда SELECT
@@innodb_file_format_check; отображает имя последнего формата файла, который, как известно, используется таблицами в открытом в настоящее время наборе файлов ib и поддерживается текущим исполняемым программным обеспечением.
© 2025 Oracle
Licensed under the GPLv2 License.