Czy MySQL powinien być instalowany sam

20

Często słyszę ludzi, którzy wypowiadają takie stwierdzenia, jak: „nasz serwer na serwerze MySQL zawiódł”, co sprawia wrażenie, że poświęcają jeden komputer jako serwer MySQL (myślę, że po prostu instalują system operacyjny i tylko MySQL na nim). Jako programista, a nie sysadmin, jestem przyzwyczajony do instalowania MySQL jako części stosu LAMP wraz z serwerem WWW i PHP.

Czy ktoś może mi wyjaśnić:

  • po co instalować MySQL na osobnym serwerze? brzmi jak marnotrawstwo zasobów, kiedy mogę dodać cały stos lamp i dodatkowe serwery.
  • jeśli baza danych znajduje się na osobnym komputerze, w jaki sposób łączą się z nią aplikacje, które muszą jej używać?
w tym samym wieku
źródło

Odpowiedzi:

30

Gdy platforma aplikacji i baza danych konkurują o zasoby, jest to zwykle pierwsza wskazówka, że ​​jesteś gotowy na dedykowany serwer bazy danych.

Po drugie, wysoka dostępność: konfiguracja klastra bazy danych (i zwykle z kolei klastra serwerów WWW / aplikacji z równoważeniem obciążenia).

Powiedziałbym również, że bezpieczeństwo odgrywa dużą rolę w przejściu na oddzielne serwery, ponieważ możesz mieć różne zasady dostępu do sieci dla każdego serwera (na przykład serwer sieci Web DMZ z serwerem bazy danych w sieci LAN).

Dostęp do serwera bazy danych jest przez sieć. tzn. gdy zwykle określasz host lokalny jako „localhost”, określasz adres hosta / IP serwera bazy danych. Uwaga: zazwyczaj musisz zmodyfikować konfigurację serwera bazy danych, aby umożliwić połączenia / umożliwić nasłuchiwanie na interfejsie innym niż interfejs pętli zwrotnej.

gravyface
źródło
Dedykowana maszyna pozwala również odpowiednio dostosować konfigurację dysku. Serwery WWW są bardzo zadowolone, gdy dane żyją na RAID 6; serwery baz danych wolą RAID 1.
Simon Richter
12

Oddzielny serwer bazy danych jest tylko częścią dobrego, skalowalnego projektu. Nie ma to znaczenia, jeśli ruch nie jest bardzo duży i naprawdę wystarczy jeden serwer.

Ale w przypadku bardziej obciążonych usług izolowanie usług od siebie jest dobrą rzeczą. Jeśli ktoś zrobi DDoSses serwerowi sieci i zmusi go do zużywania wszystkich zasobów, nie będzie to w ogóle prześladowało serwera bazy danych. W środowiskach współdzielonych prawdopodobnie więcej niż jeden serwer sieciowy korzysta z serwera bazy danych, więc jeśli serwer bazy danych zawiera dane dla 50 różnych stron internetowych, to tylko jedna strona internetowa przestaje działać z powodu DDoS jest lepsza niż usunięcie wszystkiego.

Również z punktu widzenia sysadmin bardziej jasne jest, czy istnieją dedykowane serwery o rozsądnych nazwach, takie jak „mysql-01.twojafirma.com” i „webserver-01.twojafirma.com”. Gdy otrzymują alerty, natychmiast widzą, co się dzieje, przynajmniej w sensie „OK, coś jest nie tak z bazą danych”. Wiem, że to słaby argument, ponieważ kilka nazw DNS może wskazywać na pojedynczy serwer, ale nadal.

Twoje aplikacje połączyłyby się ze zdalnym serwerem bazy danych bez problemów przez sieć. Aieeeeeee! Jak twoja przeglądarka łączy się ze zdalnym serwerem? To magia! Eee… poważniej, zamiast „localhost” po prostu podajesz adres serwera w $ programowanie_języku_wyboru i wszystko gotowe.

Janne Pikkarainen
źródło
2
W nawiązaniu do komentarza Janne dotyczącego punktu widzenia: sysadmin ... Jeśli masz problemy z wydajnością lub w inny sposób potrzebujesz debugować aplikację, jest o wiele łatwiej zrobić, gdy serwer WWW i serwer bazy danych znajdują się na osobnych komputerach.
HTTP500
5
  • Niektóre strony internetowe / aplikacje korzystają z bazy danych tak bardzo, że wymagają jednego lub więcej serwerów dedykowanych samej bazie danych.
  • Przez sieć.
Ignacio Vazquez-Abrams
źródło
3

LAMP to stos aplikacji, ale nie wszystkie muszą być zainstalowane na tym samym hoście. Jak zauważyli inni ze względu na wydajność, bezpieczeństwo lub skalowalność, często nie są one instalowane na tym samym hoście. Można również znaleźć, że sprzęt, który jest optymalny dla jednej części architektury, może nie być dla innej.

Na przykład w bazach danych chodzi o zarządzanie pamięcią. Im szybciej mogę uzyskać informacje z dysku, tym szybciej mogę dostać je do requestera. Jeśli współużytkuję podsystem dyskowy z kilkoma innymi elementami stosu aplikacji, takimi jak serwer WWW, rywalizacja o współdzielone zasoby stad odczytu i zapisu dysków może faktycznie obniżyć moją wydajność. Ponadto podział pamięci RAM między serwer WWW i serwer bazy danych na danym hoście może nie zapewnić wystarczającej puli zasobów, aby mógł działać w najbardziej efektywny sposób, być w stanie buforować tyle informacji w pamięci RAM bez konieczności przechodzenia na dysk obraz, stronę lub zestaw wyników zapytania.

Pod względem administracyjnym należy również zwiększyć wydajność. Wyobraź sobie, że uruchamiasz swoje przedsiębiorstwo na aplikacjach open source, które wykorzystują MySQL jako wspólny backend. Czy naprawdę chcesz mieć proliferację serwerów baz danych z każdą aplikacją? Może to być koszmar DBA „OK, która aplikacja korzysta z tej DB?” Będziesz miał wiele wersji, wiele konfiguracji sprzętu / oprogramowania, wiele strategii przechowywania danych. Prawdopodobnie posiadałbyś bardzo rozproszone umiejętności administracyjne. Zamiast tego połącz instancje z jednym fizycznym sprzętem zoptymalizowanym pod kątem roli i przydziel dedykowane zasoby do zarządzania serwerem i jego danymi.

James Pulley
źródło
2

Zapytania MySQL mogą być bardzo wymagające pod względem zasobów, co może spowolnić twój serwer LAMP.

Gdy prowadzisz dużą, skomplikowaną i obszerną stronę internetową, dobrze jest rozważyć przeniesienie bazy danych na inny serwer dedykowany. W ten sposób masz dwa serwery, jeden dedykowany do sieci, a drugi do awarii bazy danych. Może to zwalniać zasoby i przyspieszać zapytania dotyczące witryny i bazy danych.

Serwer WWW musi po prostu połączyć się z adresem serwera bazy danych zamiast localhostwykonywać zapytania do bazy danych.

Jake Wilson
źródło