Что такое файлы iblog в mysql?

15

Я хотел бы понять эти файлы ibdata, поскольку они играют жизненно важную роль в процедуре восстановления после сбоя. Я не мог найти подходящие ресурсы в Интернете для этого.

Удай
источник

Ответы:

17

ibdata1

Файл ibdata1 является системным табличным пространством для инфраструктуры InnoDB.

Он содержит несколько классов для информации, необходимой для InnoDB

  • Страницы табличных данных
  • Таблицы указателей страниц
  • Словарь данных
  • Данные контроля MVCC
    • Отменить пробел
    • Откат сегментов
  • Двойной буфер записи (страницы, написанные в фоновом режиме, чтобы избежать кэширования ОС)
  • Вставить буфер (изменения во вторичные индексы)

Нажмите здесь, чтобы увидеть графическое представление

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

пример

  • datadir - это / var / lib / mysql
  • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;создает /var/lib/mysql/mydb/mytable.frm
    • innodb_file_per_table включен, страницы данных / индекса хранятся в /var/lib/mysql/mydb/mytable.ibd
    • innodb_file_per_table отключен, страницы данных / индексов хранятся в ibdata1

Независимо от того, где хранится таблица InnoDB, функциональность InnoDB требует поиска метаданных таблицы, а также сохранения и извлечения информации MVCC для поддержки соответствия ACID и изоляции транзакции. .

Вот мои прошлые статьи по отделению табличных данных и индексов от ibdata1

файлы iblog (иначе ib_logfile0,ib_logfile1 )

Если вы хотите знать, для чего ib_logfile0и ib_logfile1для чего они нужны, это журналы повторов InnoDB. Их никогда не следует стирать или изменять до тех пор, пока не произойдет полное нормальное отключение mysqld . Если mysqld когда-либо падает, просто запустите mysqld. Он будет считывать ib_logfile0и ib_logfile1проверять любые изменения данных, которые не были отправлены в буфер двойной записи в ibdata1. Он будет воспроизводить (повторять) эти изменения. Как только они будут воспроизведены и сохранены, mysqld будет готов к новым соединениям с БД.

RolandoMySQLDBA
источник
Как место будет сохранено в этих файлах журнала ...? Я имею в виду спросить ... «для новых транзакций innodb, как будут использоваться те же файлы журналов, если они полностью заполнены…»
Uday
Мой предыдущий комментарий о файлах ib_log ....
Uday
1
@ Uday Пространство не будет сохранено в файлах iblog, пока буфер журнала не станет пустым. Это динамический процесс, в котором пространство журнала занято и освобождается на основании остановленных изменений транзакций, записанных в буфере журнала. Эти файлы журналов полностью заполняются, когда вы выполняете огромные загрузки данных, что приводит к ошибкам Innodb, в которых указывается «InnoDB: что превышает емкость группы журналов». Это означает, что размер файла журнала должен быть больше, чтобы что-то делать. Надеюсь, мое объяснение очистило ваши сомнения.
Гопинатх
innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibdи innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1должно быть наоборот, не так ли?
Рабуд
1
@rabudde Теперь все исправлено. Еще раз спасибо !!!
RolandoMySQLDBA