Czym dokładnie są pliki iblog w mysql

15

Chciałbym zrozumieć te pliki ibdata, ponieważ odgrywają one istotną rolę w procedurze odzyskiwania po awarii. Nie mogłem znaleźć w tym celu odpowiednich zasobów w Internecie.

Uday
źródło

Odpowiedzi:

17

ibdata1

Plik ibdata1 to systemowy obszar tabel dla infrastruktury InnoDB.

Zawiera kilka klas informacji istotnych dla InnoDB

  • Strony danych tabeli
  • Tabele indeksu stron
  • Słownik danych
  • Dane kontrolne MVCC
    • Cofnij spację
    • Wycofywanie segmentów
  • Podwójny bufor zapisu (strony zapisane w tle, aby uniknąć buforowania systemu operacyjnego)
  • Wstaw bufor (zmiany w indeksach pomocniczych)

Kliknij tutaj, aby zobaczyć reprezentację obrazkową

Możesz rozwodzić się z danymi i stronami indeksu z ibdata1, włączając opcję innodb_file_per_table . Spowoduje to, że każda nowo utworzona tabela InnoDB będzie przechowywać dane i strony indeksowe w .ibdpliku zewnętrznym .

Przykład

  • datadir to / var / lib / mysql
  • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;, tworzy /var/lib/mysql/mydb/mytable.frm
    • innodb_file_per_table włączony, Strony danych / indeksu przechowywane w /var/lib/mysql/mydb/mytable.ibd
    • innodb_file_per_table wyłączony, Strony danych / indeksu przechowywane w ibdata1

Niezależnie od tego, gdzie przechowywana jest tabela InnoDB, funkcjonalność InnoDB wymaga szukania metadanych tabeli oraz przechowywania i pobierania informacji MVCC w celu obsługi zgodności z ACID i izolacji transakcji .

Oto moje poprzednie artykuły na temat oddzielania danych tabeli i indeksów od ibdata1

Pliki iblog (aka ib_logfile0, ib_logfile1)

Jeśli chcesz wiedzieć, do czego służą ib_logfile0i ib_logfile1są, są to dzienniki ponawiania InnoDB. Nigdy nie należy ich usuwać ani zmieniać ich rozmiaru, dopóki nie nastąpi pełne normalne zamknięcie mysqld . Jeśli mysqld kiedykolwiek się zawiesi, po prostu uruchom mysqld. Odczyta ib_logfile0i ib_logfile1przejrzy zmiany danych, które nie zostały opublikowane w podwójnym buforze zapisu ibdata1. Powtórzy (ponownie) te zmiany. Po ich odtworzeniu i zapisaniu mysqld jest gotowy na nowe połączenia DB.

RolandoMySQLDBA
źródło
Jak przestrzeń zostanie zachowana w tych plikach dziennika ...? Chodzi mi o to prosić ... „dla nowych transakcji InnoDB, jak te same pliki dziennika być stosowane, jeżeli są one całkowicie wypełnione ....”
Uday
Mój poprzedni komentarz dotyczy plików ib_log ....
Uday
1
@ Uday Przestrzeń nie zostanie zachowana w plikach iblog, dopóki bufor bufora nie będzie pusty. Jest to proces dynamiczny, w którym przestrzeń dziennika jest zajmowana i zwalniana na podstawie zatrzymanych zmian transakcji zarejestrowanych w buforze dziennika. Te pliki dziennika są całkowicie zajęte, gdy wykonujesz duże ładunki danych, co prowadzi do błędów Innodb stwierdzających „InnoDB: przekracza pojemność grupy dzienników”., Co oznacza, że ​​rozmiar pliku dziennika powinien być większy do zrobienia. Mam nadzieję, że moje wyjaśnienie rozwiało twoje wątpliwości.
Gopinath,
innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibdi innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1powinno być odwrotnie, prawda?
rabudde
1
@rabudde Zostało już naprawione. Jeszcze raz dziękuję !!!
RolandoMySQLDBA