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?
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?
Odpowiedzi:
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.
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.
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.
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.