Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dziennik transakcji MySQL

Zdecydowanie jesteś na dobrej drodze.

Za każdym razem, gdy InnoDB wykonuje transakcję, która musi zostać zatwierdzona, odbywa się to jako zatwierdzenie dwufazowe. Transakcja jest zapisywana w tych dziennikach jako pierwsza. Następnie zostają popełnione z tego miejsca.

To bardzo pomaga w przypadku awarii MySQL lub awarii serwera.

Po ponownym uruchomieniu mysql wszystkie niezatwierdzone wpisy w ib_logfile0 i ib_logfile1 są odtwarzane w ramach odzyskiwania po awarii InnoDB, aby przywrócić InnoDB do harmonijnego stanu (jest to spójne i trwałe części Zgodność z ACID )

Jeśli usuniesz ib_logfile0 i ib_logfile1 i uruchomisz mysql, wszelkie niezatwierdzone transakcje zawarte w tych plikach zostaną utracone. Podczas cyklu odzyskiwania po awarii, jeśli brakuje plików dziennika, są one ponownie generowane na podstawie innodb_log_file_size ustawienie.

Szczegółowe informacje można znaleźć w Dokumentacji MySQL wyjaśnienie InnoDB .

@karatedog część MVCC InnoDB znajduje się w systemowej przestrzeni tabel, lepiej znanej jako ibdata1. Wszelkie dane, które pojawiają się przed rozpoczęciem transakcji, są rejestrowane, aby umożliwić innym osobom, które uzyskują dostęp do potrzebnych wierszy, wgląd w dane przed nałożeniem jakichkolwiek aktualizacji. Pozwala to na tzw. REPEATABLE-READ. Podlega to I zgodności z ACID, mam na myśli izolację. Pisałem o tym posty w DBA StackExchange w odniesieniu do różnych scenariuszy, w których izolacja transakcji jest dobra, zła lub brzydka.

Jeśli chodzi o MyISAM, odzyskiwanie po awarii nie jest automatyczne. Awaria dość łatwo . Dlatego polecenie SQL REPAIR TABLE istnieje. Dlatego też narzędzie MySQL myisamchk ma -r opcja wykonania REPAIR TABLE dla tabel MyISAM, które nie są online.

MariaDB i Aria podjęto próby stworzenia bezpiecznego silnika pamięci masowej jako zamiennika MyISAM.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP i MySQL opcjonalne warunki WHERE

  2. Jak uzyskać dane wyjściowe w formacie tabeli z MySQL w trybie nieinteraktywnym?

  3. Oblicz różnicę między dwiema datami i godzinami

  4. SQL - Jak transponować?

  5. Jak zduplikować bazę danych MySQL na tym samym serwerze?