Spec-Zone.ru › MySQL 5.7

14.10.2 Проверка совместимости форматов файлов

  • 14.10.2.1 Проверка совместимости при запуске InnoDB
  • 14.10.2.2 Проверка совместимости при открытии таблицы

InnoDB включает несколько проверок, предотвращающих возможные сбои и повреждение данных, которые могут возникнуть при использовании старой версии сервера MySQL с файлами данных InnoDB, использующими более новый формат файлов. Эти проверки выполняются при запуске сервера и при первом доступе к таблице. В этом разделе описаны эти проверки, способы их управления, а также возможные ошибки и предупреждения.

Обратная совместимость

Вам нужно учитывать обратную совместимость форматов файлов только при использовании недавней версии InnoDB (MySQL 5.5 и выше с InnoDB) вместе со старой версией (MySQL 5.1 или более ранней с встроенным InnoDB, а не плагином InnoDB). Чтобы свести к минимуму вероятность проблем совместимости, можно использовать плагин InnoDB для всех серверов баз данных MySQL 5.1 и более ранних версий.

В целом, более новая версия InnoDB может создавать таблицу или индекс, который не может безопасно читаться или записываться с более старой версией InnoDB без риска сбоев, зависаний, неправильных результатов или повреждения данных. InnoDB включает механизм для предотвращения этих ситуаций и обеспечения совместимости между файлами базы данных и версиями InnoDB. Этот механизм позволяет использовать новые возможности выпуска InnoDB (например, улучшения производительности и исправления ошибок) и сохранять возможность использования базы данных со старой версией InnoDB, предотвращая случайное использование новых функций, создающих несовместимые файлы дисков.

Если определённая версия InnoDB поддерживает конкретный формат файла (вне зависимости от того, является ли этот формат стандартным), вы можете запросить и обновить любую таблицу, которая требует этого формата или более раннего формата. Только создание новых таблиц с использованием новых функций ограничено в зависимости от конкретного включённого формата файлов. И наоборот, если файловое пространство содержит таблицу или индекс, использующий формат файла, который не поддерживается, к нему невозможно получить доступ даже для чтения.

Единственный способ «снизить» пространство таблиц InnoDB до более раннего формата файлов Antelope — это скопировать данные в новую таблицу в файловом пространстве, использующем более ранний формат.

Наиболее простой способ определить формат файла существующего пространства таблиц InnoDB — изучить свойства содержащихся в нём таблиц, используя команду SHOW TABLE STATUS или запросив таблицу INFORMATION_SCHEMA.TABLES. Если Row_format таблицы указано как 'Compressed' или 'Dynamic', то файловое пространство, содержащее таблицу, поддерживает формат Barracuda.

Внутренние детали

Каждое файловое пространство InnoDB на основе таблиц (представленное файлом *.ibd) помечено идентификатором формата файла. Системное пространство таблиц (представленное файлами ibdata) помечено «самым высоким» форматом файла, используемым в группе файлов базы данных InnoDB, и этот тег проверяется при открытии файлов.

Создание сжатой таблицы или таблицы с ROW_FORMAT=DYNAMIC обновляет заголовок файла соответствующего файла-таблицы .ibd и тип таблицы в словаре данных InnoDB идентификатором формата файла Barracuda. С этого момента таблица не может использоваться с версией InnoDB, которая не поддерживает формат файла Barracuda. Для защиты от нестандартного поведения InnoDB выполняет проверку совместимости при открытии таблицы. (Во многих случаях инструкция ALTER TABLE пересоздаёт таблицу и тем самым изменяет её свойства. Специальный случай добавления или удаления индексов без перестройки таблицы описан в разделе 14.13.1 «Операции DDL в режиме онлайн».)

Общие пространства таблиц, которые также представлены файлом *.ibd, поддерживают форматы файлов Antelope и Barracuda. Более подробную информацию об общих пространствах таблиц см. в разделе 14.6.3.3 «Общие пространства таблиц».

Определение набора файлов ib

Чтобы избежать путаницы, в рамках этого обсуждения мы определяем термин «набор файлов ib» как набор файлов операционной системы, которые InnoDB управляет как единицу. Набор файлов ib включает следующие файлы:

  • Системное пространство таблиц (один или несколько файлов ibdata), содержащее внутреннюю системную информацию (включая внутренние каталоги и информацию об откатах), и возможно содержащее пользовательские данные и индексы.

  • Ноль или более пространств таблиц для отдельных таблиц (также называемых «файлы на таблицу», файлы с именем *.ibd).

  • Файлы журнала InnoDB; обычно два, ib_logfile0 и ib_logfile1. Используются для восстановления после сбоя и в резервных копиях.

Набор «файлов ib» не включает соответствующие файлы .frm, содержащие метаданные о таблицах InnoDB. Файлы .frm создаются и управляются MySQL и иногда могут не синхронизироваться с внутренними метаданными в InnoDB.

В одном наборе «файлов ib» могут храниться несколько таблиц, даже из разных баз данных. (В MySQL «база данных» — это логическая коллекция таблиц, что в других системах называется «схемой» или «каталогом».)

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/innodb-file-format-compatibility.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API