Полусинхронна репликация
Сайт на Delphi: ежедневни Delphi-новини, документация, статии, преглед, интервю, компютърен хумор.
Google разполага с широк набор от корекции на MySQL и InnoDB. Един от тях, предназначен за MySQL 5.0, осигурява поддръжка за полусинхронна репликация. Тази функция е преработена и включена в "обикновената" функционалност на MySQL 5.5.
Идеята зад полусинхронната репликация е да се напише всяка промяна в поне един от сървърите надолу по веригата, преди да се позволи да бъде направена. Това означава, че ако основният сървър се повреди, всяка връзка ще загуби не повече от една транзакция.
Важно е да се разбере, че поддръжката на полусинхронна репликация не забавя ангажиментите на транзакциите - изпращането на отговор до клиента се забавя, докато транзакцията не бъде записана в релейния журнал на поне един сървър надолу по веригата. На фиг. Фигура 4-7 показва реда на повикванията по време на завършване на транзакцията. Може да се види, че транзакцията е фиксирана в базата данни, преди да бъде изпратена до подчинения сървър, но отговорът идва на клиента само след като подчиненият сървър се увери, че транзакцията е изхвърлена в постоянната памет.
Ориз. 4-7. Завършване на транзакция при полусинхронна репликация Следователно всяка връзка може да загуби транзакция, ако възникне повреда, след като транзакцията е завършена от машината на базата данни, но преди да бъде изпратена до сървъра надолу по веригата. Но клиентът получава потвърждение за транзакцията само след като тя бъде потвърдена от подчинения сървър, така че не се губи повече от една транзакция.
В повечето случаи се губи една клиентска транзакция, но ако клиентът е установил няколко активни връзки към главния сървър наведнъж, той може да загуби една транзакция на връзка, ако няколко транзакции са се изпълнявали едновременно по време на повредата на сървъра.