Skocz do zawartości
Zaloguj się, aby obserwować  
Desavil

MySQL - HA

Polecane posty

Witam, chciałbym poradzić się w jaki sposób najlepiej mógłbym zrobić High Availability dla bazy/serwera MySQL.

 

Przykładowo - mam postawionego proftpd'a z MySQL. W lokalizacji A znajduje się serwer MySQL i baza, a z bazą łączą się klienci z lokalizacji A,B,C,D,[...]. Jeżeli padnie łącze pomiędzy serwerami w lokalizacjach np. A i D wtedy z FTP nie połączą się klienci z serwera D.

 

Mam pomysł na dwa rozwiązania w takim wypadku:

1. Użycie proxy - jeżeli jest jakiś problem w komunikacji, system przełącza ruch przez inny serwer, aby dostać się do serwera z bazą danych, przez inny serwer.

2. Replikacja: master-master.

 

Całkiem sensownie wygląda drugie rozwiązanie, gdyż ma wiele pozytywów jakie można dostrzec, np. jeżeli fizycznie padnie serwer z bazą danych, lub też po stronie aplikacji coś padnie to wtedy korzysta z drugiego niezależnego serwera master z innej lokalizacji. Co w przypadku pierwszego rozwiązania w takiej sytuacji wszystko pada.

 

Ale zastanawia mnie jedna kwestia przy tego typu rozwiązaniu.

Postawię sobie dwa mastery w lokalizacji A oraz B, wszystko ładnie. Ale pada połączenie pomiędzy A oraz B i co w takiej sytuacji? Dane już nie będą spójne. Bo klienci łączący się z bazą danych będą lądować na losowy serwer (chyba tak to działa) - dajmy przykładowo na FTP łączy się użytkownik: kot przesyła pliki w bazie na serwerze A robią się update z sumą wgranych plików. Rozłącza się, za kilka minut znów łączy się na FTP, tym razem trafia, że "wskoczył" serwer bazy w lokalizacji B, wgrywa pliki, lecą update do bazy. Łącze pomiędzy A i B wstaje, i co wtedy? Wartości są zupełnie różne w obydwóch lokalizacjach.

 

A co najlepsze, mamy jakiś web-panel do zarządzania tymi użytkownikami FTP w lokalizacji D (której łącze ma dostęp do obydwóch serwerów MySQL, ale pamiętajmy że łącze pomiędzy samymi serwerami master nadal leży) robi się select i co chwile wskakują inne wartości?

 

Macie jakieś doświadczenie z HA w MySQL, jak mógłbym to rozwiązać? FTP to oczywiście przykład, który nasunął mi się jako pierwszy, aby na tym to opisać.

Edytowano przez Desavil (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×