Klaster bazy danych i równoważenie obciążenia

149

Co to jest grupowanie baz danych? Jeśli pozwolisz, aby ta sama baza danych znajdowała się na 2 różnych serwerach, w jaki sposób będą one synchronizować dane. Czym różni się to od równoważenia obciążenia z perspektywy serwera bazy danych?

Malik Daud Ahmad Khokhar
źródło

Odpowiedzi:

132

Klastrowanie baz danych jest terminem nieco niejednoznacznym, niektórzy producenci uważają, że klaster ma dwa lub więcej serwerów współużytkujących tę samą pamięć, inni nazywają klaster zestawem replikowanych serwerów.

Replikacja definiuje metodę, za pomocą której zestaw serwerów pozostaje zsynchronizowany bez konieczności współdzielenia pamięci i może być rozproszony geograficznie, istnieją dwa główne sposoby, aby to zrobić:

  • replikacja typu master-master (lub multi-master): każdy serwer może aktualizować bazę danych. Zwykle zajmuje się tym inny moduł w bazie danych (lub w niektórych przypadkach całe inne oprogramowanie działające na nich).

    Wadą jest to, że bardzo trudno jest to zrobić dobrze, a niektóre systemy tracą właściwości ACID w tym trybie replikacji.

    Zaletą jest to, że jest elastyczny i możesz obsługiwać awarię dowolnego serwera, jednocześnie mając aktualizowaną bazę danych.

  • replikacja typu master-slave: istnieje tylko jedna kopia danych autorytatywnych, która jest przekazywana na serwery podrzędne.

    Wadą jest to, że jest mniej odporny na błędy, jeśli pan umrze, nie ma dalszych zmian w niewolnikach.

    Plusem jest to, że jest to łatwiejsze do wykonania niż multi-master i zwykle zachowuje właściwości KWASU.

Równoważenie obciążenia to inna koncepcja, polega ona na dystrybucji zapytań wysyłanych do tych serwerów, tak aby obciążenie było rozłożone możliwie równomiernie. Zwykle odbywa się to w warstwie aplikacji (lub za pomocą puli połączeń). Jedyny bezpośredni związek między replikacją a równoważeniem obciążenia polega na tym, że aby móc zrównoważyć obciążenie, potrzebujesz pewnej replikacji, w przeciwnym razie miałbyś pojedynczy serwer.

Vinko Vrsalovic
źródło
1
Ach, zapomniałem o replikacji :) Tak, w ten sposób można osiągnąć równoważenie obciążenia w połączeniu z logiką poziomu aplikacji :). +1
Jimmy Chandra
1
Dokumentacja Postgresql inaczej odwołuje się do „klastra bazy danych”: „Zanim będzie można cokolwiek zrobić, należy zainicjować obszar przechowywania bazy danych na dysku. Nazywamy to klastrem bazy danych. (SQL używa terminu klaster wykazu). Klaster bazy danych to zbiór bazy danych, które są zarządzane przez pojedynczą instancję działającego serwera bazy danych. ” postgresql.org/docs/8.3/static/creating-cluster.html
Donato
1
Co oznaczają właściwości KWASU, a raczej, co dokładnie tracisz, jeśli ich nie zachowujesz?
TheStoryCoder
@TheStoryCoder W informatyce ACID (Atomicity, Consistency, Isolation, Durability) to zbiór właściwości transakcji bazodanowych, których celem jest zagwarantowanie ważności nawet w przypadku błędów, awarii zasilania itp. W kontekście baz danych sekwencja bazy danych operacje, które spełniają właściwości ACID (i mogą być postrzegane jako pojedyncza operacja logiczna na danych), nazywa się transakcją. Na przykład transfer środków z jednego konta bankowego na drugie, nawet obejmujący wiele zmian, takich jak obciążenie jednego konta i uznanie innego, jest pojedynczą transakcją.
fizampou
17

Z punktu widzenia SQL Server:

Klastrowanie da ci konfigurację aktywno - pasywną. Oznacza to, że w klastrze z 2 węzłami jeden z nich będzie aktywny (obsługujący), a drugi pasywny (czekający na przejęcie, gdy aktywny węzeł ulegnie awarii). To wysoka dostępność z punktu widzenia sprzętu.

Możesz mieć klaster aktywny-aktywny, ale będzie to wymagało wielu wystąpień programu SQL Server uruchomionych w każdym węźle. (tj. wystąpienie 1 w węźle A przechodzi awaryjnie do wystąpienia 2 w węźle B, a wystąpienie 1 w węźle B przechodzi awaryjnie do wystąpienia 2 w węźle A).

Równoważenie obciążenia (przynajmniej z punktu widzenia SQL Server) nie istnieje (przynajmniej w tym samym sensie równoważenia obciążenia serwera WWW). W ten sposób nie można zrównoważyć obciążenia. Możesz jednak podzielić swoją aplikację, aby działała na niektórych bazach danych na serwerze 1, a także na niektórych bazach danych na serwerze 2 itd. Jest to podstawowa metoda „równoważenia obciążenia” w świecie SQL.

Jimmy Chandra
źródło
9

Klastrowanie wykorzystuje pewnego rodzaju współdzieloną pamięć masową (na przykład klatkę dyskową lub sieć SAN) i umieszcza na niej dwa frontony bazy danych. Serwery frontonu współużytkują adres IP i nazwę sieci klastra, których klienci używają do łączenia, i decydują między sobą, kto jest aktualnie odpowiedzialny za obsługę żądań klientów.

Jeśli pytasz o konkretny serwer bazy danych, dodaj to do swojego pytania, a my możemy dodać szczegóły dotyczące ich implementacji, ale w istocie na tym polega klastrowanie.

SqlRyan
źródło
6

Klastrowanie bazy danych jest w rzeczywistości trybem synchronicznej replikacji między dwoma lub więcej węzłami z dodatkową funkcjonalnością odporności na błędy dodaną do systemu, a także w architekturze współdzielonej. Nic nie udostępniając oznacza, że ​​poszczególne węzły w rzeczywistości nie współdzielą żadnych zasobów fizycznych, takich jak dysk czy pamięć.

Jeśli chodzi o utrzymanie synchronizacji danych, istnieje serwer zarządzania, do którego są podłączone wszystkie węzły danych wraz z węzłem SQL, aby to osiągnąć (mówiąc konkretnie o MySQL).

Teraz o różnicach: równoważenie obciążenia to tylko jeden wynik, który można osiągnąć dzięki klastrowaniu, inne obejmują wysoką dostępność, skalowalność i odporność na błędy.

Puneet Misra
źródło