2009-07-29 5 views
1

При изменении содержимого таблицы InnoDB MySQL следующие файлы в файловой системе, как представляется, быть вовлечены/изменено:Изменения в таблице 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. Что было бы последствием, если файл поврежден или удален?

ответ

4
/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 файлов в другую базу данных?

+0

Спасибо за ваш ответ! Вы знаете ответ на последний вопрос (коррупция/удаление)? Заранее спасибо! – knorv