Що саме є файли iblog в mysql


15

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

Відповіді:


17

ібдата1

Файл 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 Redo Logs. Їх ніколи не слід стирати чи змінювати розмір, доки не відбудеться повне нормальне відключення mysqld . Якщо mysqld коли-небудь виходить з ладу, просто запустіть mysqld. Він буде читати через ib_logfile0та ib_logfile1для перевірки яких - або змін даних , що не були розміщені в подвійний буфер записи в ibdata1. Він відтворить (повторить) ці зміни. Після їх відтворення та зберігання mysqld стає готовим до нових підключень до БД.


Як буде збережено простір у цих файлах журналів ...? Я маю на увазі запитати ... "для нових транзакцій 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має бути навпаки, чи не так?
rabudde

1
@rabudde Це виправлено зараз. Ще раз дякую вам !!!
RolandoMySQLDBA
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.