Изменения в таблице Myno InnoDB - какие файлы задействованы и почему? - PullRequest
1 голос
/ 29 июля 2009

При изменении содержимого таблицы InnoDB MySQL следующие файлы в файловой системе оказываются вовлеченными / изменены:

  • /path/to/mysql/data/[database]/[table].ibd (из-за innodb_file_per_table)
  • /path/to/mysql/data/data/ib_logfile0
  • /path/to/mysql/data/data/ib_logfile1
  • /path/to/mysql/data/data/ibdata1

Для каждого из этих файлов:

  1. Когда создается файл?
  2. Когда файл будет записан?
  3. Когда будет прочитан файл?
  4. Каковы будут последствия, если файл поврежден или удален?

1 Ответ

4 голосов
/ 29 июля 2009
/path/to/mysql/data/[database]/[table].ibd (due to innodb_file_per_table)

Здесь хранятся ваши данные. Они создаются при создании таблиц.

/path/to/mysql/data/data/ib_logfile0
/path/to/mysql/data/data/ib_logfile1

Это logfiles.

Все изменения данных записываются в logfiles последовательно, что позволяет вести запись с опережением записи (крайне важно для транзакций)

/path/to/mysql/data/data/ibdata1

Здесь хранятся системные данные и UNDO данные.

Если ibdata не найден, MySQL будет думать, что механизм InnoDB не инициализирован, и просто создаст новый ibdata. То же самое с logfiles.

Если к таблице выдан запрос, а файл .ibd не найден, MySQL завершится с этим сообщением:

Невозможно найти таблицу database/table из словаря внутренних данных InnoDB, хотя файл .frm для таблицы существует. Возможно, вы удалили и воссоздали InnoDB файлы данных, но забыли удалить соответствующие .frm файлы InnoDB таблиц, или вы переместить .frm файлы в другую базу данных?

...