zmiany w mysql

Porównywałem ostatnio funkcjonalność postgresa i mysql w zakresie replikacji, i mam kilka obserwacji.

Jak wiadomo, mysql posiada wbudowaną obsługę replikacji.
Posiada ona taką główną zaletę, że jest wbudowana >;)
Z drugiej strony - ma poważne ograniczenia, ponieważ jest oparta na logowaniu zapytań, a nie zmian w danych tak jak np. Slony.
Tutaj można znaleźć więcej informacji.

Jednak mysql przechodzi poważne zmiany…

W wersji 5.0, która jest obecnie stabilna pojawiły się procedury składowane oraz triggery. oba te “ficzery” działają w dosyć ograniczonym zakresie.
Problemy jakie autorzy mysql mieli z nimi dobrze widać, gdy czyta się dokumentację - cały rozdział o procedurach składowanych i triggerach najeżony jest ostrzeżeniami dotyczącymi logu binarnego (binlog), który jest czymś w rodzaju logu transakcji - a zarazem podstawą systemu replikacji w mysql.

Nic dziwnego - idea replikacji “statement-based” jest z natury słaba. Jest to prymitywne podejście zastosowane bez specjalnych sukcesów m.in. w pgpool.

Odpowiedzią na te problemy ze strony mysql jest wprowadzony w wersji 5.1.x nowy format binlog. Loguje on zmiany już “po bożemu” czyli per rekord.
Umożliwia to prawidłową replikację nawet gdy korzysta się z triggerów i procedur modyfikujących dane.

Podsumowując:
mysql próbuje przesunąć się w stronę dużych RDBMS.
niewykluczone że za parę lat zmieni się w system bazodanowy z prawdziwego zdarzenia.

Tags: , ,

Leave a Reply