Czy programista powinien przechowywać bazy danych na węźle obliczeniowym czy na węźle pamięci masowej?

Eva Wong jest redaktorką techniczną i rezydentką majsterkowania w ZimaSpace. Jest geekiem od zawsze, z pasją do domowych laboratoriów i oprogramowania open source, a jej specjalnością jest przekładanie złożonych zagadnień technicznych na przystępne, praktyczne poradniki. Eva wierzy, że samodzielne hostowanie powinno sprawiać radość, a nie onieśmielać. Dzięki swoim samouczkom pomaga społeczności oswoić konfigurację sprzętu, od budowy pierwszego serwera NAS po opanowanie kontenerów Docker.

Domyślnie przechowuj aktywne pliki bazy danych na pamięci masowej o niskim opóźnieniu, blisko mocy obliczeniowej, a węzeł pamięci masowej wykorzystuj do kopii zapasowych, zrzutów, replik i archiwów.

Ta domyślna zasada ulega zmianie, gdy węzeł pamięci masowej zapewnia starannie zaprojektowaną ścieżkę dostępu do pamięci blokowej, zmierzone opóźnienia, prawidłowe gwarancje trwałości danych oraz korzyści w zakresie odzyskiwania warte dodatkowej zależności. Nie chodzi tylko o wybór między pojemnością lokalną a sieciową: dzienniki transakcji, pliki danych, kopie zapasowe, pliki przesyłane przez aplikację i tymczasowe bazy testowe różnią się wzorcami zapisu oraz skutkami awarii.

Oddziel stan bazy danych od zrzutów i kopii zapasowych

Przed wyborem węzła określ ścieżki wszystkich elementów związanych z bazą danych. Główny katalog danych i dziennik transakcji zawierają aktywny stan; wymagają spójnej kolejności zapisów i przewidywalnych opóźnień. Zrzuty logiczne, kopie zapasowe danych bazowych, archiwalne dzienniki, eksporty i pliki przesyłane przez aplikację mają inne wzorce dostępu i często można je bezpiecznie przechowywać w sieci.

Nie montuj jednego udziału NAS i nie umieszczaj w nim wszystkiego. Oddziel aktywny wolumin bazy danych od miejsc przechowywania kopii zapasowych i dużych zbiorów danych aplikacji. Dzięki temu można dostosowywać, monitorować, zapełniać, tworzyć migawki, przywracać i migrować każdy z tych zasobów niezależnie, zamiast zakładać, że wszystkie trwałe dane wymagają tego samego nośnika.

W przypadku krótkotrwałych baz danych dla gałęzi lub testów CI czas ponownego utworzenia może być ważniejszy niż trwałość danych. Umieść je na szybkiej, lokalnej pamięci tymczasowej i odtwarzaj z migracji lub zanonimizowanych danych początkowych. W przypadku codziennej bazy danych dewelopera traktuj awarię lokalnego dysku SSD jako zdarzenie wymagające odzyskiwania i dbaj o to, by zdalna kopia była na tyle aktualna, aby spełnić zadeklarowany punkt odzyskiwania.

Zmierz ścieżkę zapisu, zanim wybierzesz węzeł

Wydajność bazy danych zależy nie tylko od szybkości transferu sekwencyjnego. Mierz opóźnienie synchronicznego zatwierdzania transakcji, losowe odczyty i zapisy, głębokość kolejki przy ruchu generowanym przez kopie zapasowe oraz zachowanie systemu podczas przerw w działaniu ścieżki sieciowej. Łącze 10GbE może szybko przesyłać duże pliki, a jednocześnie zwiększać opóźnienia i wprowadzać kolejny punkt awarii dla każdej transakcji.

Opublikowane porównanie PostgreSQL wykazało, że lokalna pamięć NVMe zapewniała niższe i bardziej przewidywalne opóźnienia niż testowane usługi chmurowe z pamięcią masową podłączoną przez sieć. Zwrócono w nim również uwagę na zalety pamięci masowej w sieci, takie jak elastyczność i trwałość. Te testy porównawcze PostgreSQL na pamięci lokalnej i podłączonej przez sieć nie gwarantują takich samych wyników w domowym laboratorium, ale pokazują, dlaczego lokalizację bazy danych należy dobierać na podstawie pomiarów dla danego obciążenia, a nie wyłącznie szybkości interfejsu.

Przeprowadź reprezentatywny test z takim samym systemem plików, ustawieniami synchronizacji, wersją bazy danych, zestawem danych i współbieżnością, jakie planujesz dla usługi. Podczas testu rozpocznij przesyłanie dużej kopii zapasowej lub plików multimedialnych przez sieć pamięci masowej. Jeśli opóźnienia ogona lub czas zatwierdzania transakcji stają się niestabilne, większa pojemność centralnej pamięci masowej nie rekompensuje problemów ze wspólną ścieżką.

Domyślnie przechowuj podstawowe pliki bazy danych blisko zasobów obliczeniowych

W przypadku jednego dewelopera, jednego węzła obliczeniowego i niewielkich baz danych lokalne dyski SSD w konfiguracji lustrzanej lub lokalny wolumin umożliwiający odzyskiwanie zwykle zapewniają najjaśniejszy podział odpowiedzialności. Proces bazy danych, jej pliki danych i dziennik zapisu z wyprzedzeniem ulegają awarii razem, a węzeł pamięci masowej otrzymuje kopie zapasowe za pośrednictwem procesu uwzględniającego specyfikę bazy danych, zamiast udostępniać system plików przez sieć z ciągłym dostępem do zapisu.

Umieszczenie danych lokalnie nie oznacza korzystania z jednego, niezabezpieczonego dysku rozruchowego. Jeśli to możliwe, oddziel wolumin bazy danych od systemu operacyjnego, monitoruj wolne miejsce i stan dysku, zarezerwuj pojemność na czynności konserwacyjne oraz eksportuj kopie zapasowe przed aktualizacjami. Przypisz kontenery lub maszyny wirtualne do określonego węzła, aby harmonogram nie uruchomił bazy danych na innym węźle bez jej danych.

Korzystaj z lokalnej pamięci masowej tylko wtedy, gdy ścieżka odzyskiwania jest sprawdzona. Jeśli wymiana węzła obliczeniowego wymagałaby polegania na nieaktualnej kopii, pamięć centralna może ujawnić istniejący problem z kopiami zapasowymi, zamiast go powodować. Zanim zoptymalizujesz ścieżkę danych, napraw proces tworzenia i przywracania kopii zapasowych.

Wykorzystuj węzeł pamięci masowej do przechowywania kopii zapasowych, replik i archiwów

Węzeł pamięci masowej jest przydatny, gdy przechowuje zrzuty spójne z aplikacją, kopie bazowe, zarchiwizowane dzienniki transakcji, niezmienne migawki lub replikę bazy danych z własnym celem odzyskiwania. Może też przechowywać duże załączniki lub eksporty analityczne, podczas gdy wrażliwy na opóźnienia katalog bazy danych i dzienniki pozostają lokalnie.

Rola danych Domyślna lokalizacja Dlaczego Wymagany test
Dane podstawowe i dziennik transakcji SSD w węźle obliczeniowym Najniższe i najbardziej przewidywalne opóźnienia zapisu Opóźnienie zatwierdzania transakcji i odzyskiwanie po awarii
Zrzuty logiczne Węzeł pamięci masowej Przenośne źródło odtwarzania z uwzględnieniem wersji Odtwórz do pustej bazy danych
Kopia bazowa i zarchiwizowane dzienniki Węzeł pamięci masowej Odzyskiwanie do określonego punktu w czasie Odzyskaj dane do wskazanego znacznika czasu
Replika tylko do odczytu Dowolny węzeł z własnym wolumenem Skalowanie odczytów lub opcja odzyskiwania Procedura określania opóźnienia i promocji
Przesyłanie, eksporty i analityka danych nieaktywnych Węzeł pamięci masowej Pojemność ma większe znaczenie niż opóźnienie transakcji Wpływ równoczesnego transferu

Testy społecznościowe PostgreSQL przez NFS na serwerze pamięci masowej przyniosły nieoczywiste wyniki i pytania dotyczące konfiguracji, a nie uniwersalną odpowiedź. Dlatego zdalną pamięć podstawową należy traktować jako wyjątek wymagający odpowiedniego zaprojektowania: zweryfikuj zachowanie synchroniczne, obsługę awarii, opcje montowania, semantykę pamięci podręcznej i odzyskiwanie na dokładnie tym samym stosie.

Sprawdź odzyskiwanie po awarii i warunek migracji

Przetestuj cztery zdarzenia: czyste ponowne uruchomienie bazy danych, awarię węzła obliczeniowego podczas zapisu, przerwanie połączenia z pamięcią masową podczas tworzenia kopii zapasowej oraz odtworzenie na pustym hoście. Potwierdź punkt odzyskiwania, czas odzyskiwania, wyniki kontroli integralności bazy danych i zachowanie aplikacji przy ponownym nawiązywaniu połączenia. Dobry wynik typowego testu wydajności nie dowodzi, że ścieżka zapisu jest bezpieczna po przerwaniu.

Konfiguracja spełnia wymagania, gdy aktywne dane mają przewidywalne opóźnienia, kopie zapasowe nie mogą nadpisać systemu podstawowego ani doprowadzić do zakleszczenia, a zastępczy węzeł obliczeniowy może odzyskać dane bez nieudokumentowanych założeń dotyczących pamięci masowej. Przenieś pliki podstawowe do zaprojektowanej z myślą o tym usługi pamięci masowej tylko wtedy, gdy zmierzone korzyści w zakresie odzyskiwania lub mobilności przeważają nad zależnością od sieci; przenieś je z powrotem lokalnie, gdy opóźnienia ogonowe lub awarie łącza staną się głównym źródłem incydentów.

Przy podejmowaniu szerszej decyzji architektonicznej porównanie ZimaSpace dotyczące NAS-a stawiającego na pamięć masową i domowego serwera stawiającego na moc obliczeniową pomaga ustalić, która rola powinna pozostać niezmienna mimo zmian obciążeń deweloperskich.

Końcowa zasada konfiguracji

Domyślnie używaj lokalnego, chronionego magazynu SSD dla aktywnych plików bazy danych, a węzła pamięci masowej do zweryfikowanych kopii zapasowych, archiwów i wybranych replik. Wybierz zdalny magazyn podstawowy dopiero po zmierzeniu semantyki zapisu, opóźnień ogonowych, zachowania podczas awarii i korzyści związanych z odzyskiwaniem.

Konfiguracja NAS-a i serwera

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.