Tak, gdy aplikacja łączy się z usługą bazodanową przez TCP; umieszczanie surowych plików bazy danych na udziale ogólnego przeznaczenia NAS to inna i bardziej ryzykowna konstrukcja.
Staje się to rzeczywistą kwestią zgodności, gdy kontener aplikacji działa na jednym serwerze domowym, a PostgreSQL lub MariaDB na innym hoście, albo gdy proponuje się umieszczenie jego katalogu danych na NFS lub SMB. Zacznij od jednorazowej ścieżki lub konta, zachowaj poprzedni działający stan i oceniaj konstrukcję na podstawie pierwotnego obciążenia, a nie jednorazowego testu połączenia.
Oddziel obsługiwaną architekturę od ryzykownej
Obsługiwana gałąź to serwer bazy danych z własną trwałą pamięcią lokalną i protokołem sieciowym. Alternatywna gałąź to surowe pliki bazy danych udostępniane przez semantykę sieciowego systemu plików. Zapisz wersje, tożsamości, adresy, ścieżki montowania, uprawnienia oraz bieżący obserwowalny stan przed zmianą którejkolwiek gałęzi.
Odpowiednie wymagania PostgreSQL dotyczące pamięci masowej wyznaczają pierwszą granicę zgodności. Użyj ich do ograniczenia twierdzenia, a następnie sprawdź to samo zachowanie na tym konkretnym serwerze domowym, zamiast traktować udokumentowaną funkcję jako dowód, że cała konstrukcja działa.
Zapisz regułę decyzyjną przed rozpoczęciem testów: powodzenie musi oznaczać, że zatwierdzone transakcje pozostają trwałe, aplikacja ponownie łączy się bez problemów, a kopie zapasowe można odtworzyć w odizolowanej instancji; niepowodzenie obejmuje pojawienie się błędów fsync lub blokowania, zawieszanie się żądań podczas awarii albo zwracanie przez bazę niespójnych danych po ponownym połączeniu. Zapobiega to błędnej interpretacji częściowego połączenia lub pomyślnego zakończenia polecenia jako zgodności kompleksowej.
Odtwórz dokładną ścieżkę pamięci masowej i sieci
Zastosuj jeden kontrolowany test rozróżniający: wdroż jednorazową usługę bazy danych na hoście NAS, zmierz opóźnienie transakcji, przerwij sieć i sprawdź ponowne połączenie aplikacji oraz odzyskiwanie po awarii. Nie zmieniaj klienta, obciążenia, zestawu plików, konta ani harmonogramu, aby zmieniony komponent był jedynym prawdopodobnym wyjaśnieniem.
Użyj zastrzeżeń dotyczących sieciowych systemów plików, aby wybrać drugą obserwację istotną dla tej ścieżki. Zarejestruj obie strony transakcji: resolver lub trasę, wynegocjowany protokół, tożsamość procesu, kod wyjścia, opóźnienie, przesłane bajty oraz wszelkie zdarzenia odzyskiwania.
Powtórz test po zdarzeniu cyklu życia wskazanym w tytule - odtworzeniu, ponownym połączeniu, ponownym zamontowaniu, restarcie, przełączeniu awaryjnym lub zmianie klienta. Konstrukcja, która działa tylko wtedy, gdy stare gniazda, pamięci podręczne lub poświadczenia pozostają aktywne, nie przeszła testu.
pętla transakcji -> przerwanie sieci -> ponowne połączenie -> sprawdzenie spójności -> odizolowane odtworzenie
Interpretuj wyniki dotyczące trwałości, limitu czasu i odzyskiwania
PASS: zatwierdzone transakcje pozostają trwałe, aplikacja ponownie łączy się bez problemów, a kopie zapasowe można odtworzyć w odizolowanej instancji. Zapisz dokładne wersje i topologię, które doprowadziły do tego stanu, ponieważ wniosek dotyczy tych warunków, a nie każdej implementacji protokołu.
FAIL: pojawiają się błędy fsync lub blokowania, żądania zawieszają się podczas awarii albo baza zwraca niespójne dane po ponownym połączeniu. Przed przypisaniem odpowiedzialności którejkolwiek głównej gałęzi sprawdź współdzielone zależności, takie jak DNS, MTU, tożsamość, stan zapory, opóźnienie pamięci masowej i buforowane sesje.
WYJĄTEK: przenieś katalog danych z powrotem do pamięci masowej obsługiwanej przez bazę danych i zachowaj rozdzielenie na poziomie protokołu klient/serwer. Nie rozszerzaj uprawnień, nie usuwaj danych źródłowych, nie osłabiaj bezpieczeństwa transportu ani nie zastępuj działającej pamięci masowej, dopóki powtarzalna obserwacja nie wskaże, która granica zawiodła.
Zachowaj konstrukcję dopiero po sprawdzeniu na poziomie odtworzenia
Zastosuj wyłącznie działanie odpowiadające zaobserwowanej gałęzi, a następnie ponownie uruchom pierwotne obciążenie. Zachowaj konstrukcję tylko wtedy, gdy zatwierdzone transakcje pozostają trwałe, aplikacja ponownie łączy się bez problemów, a kopie zapasowe można odtworzyć w odizolowanej instancji podczas dwóch odpowiednich cykli życia i przy oczekiwanym obciążeniu współbieżnym.
Użyj procedury zrzutu bazy danych, aby sprawdzić najbliższą zależną procedurę. Jej dostęp, harmonogram i zachowanie podczas odzyskiwania muszą pozostać niezmienione, gdy nowa konstrukcja jest aktywna.
Zatrzymaj się i wróć do zapisanego stanu, jeśli pojawią się błędy fsync lub blokowania, żądania zawisną podczas awarii albo baza zwróci niespójne dane po ponownym połączeniu. Eskaluj problem, podając znaczniki czasu, dokładne wersje, dowody dotyczące trasy lub montowania oraz najmniejszy przypadek odtworzeniowy, zamiast dodawać kolejne obejście.
Porównaj wynik z zachowaniem limitów czasu NFS, aby ryzyko nie zostało jedynie przeniesione do innej warstwy sieci, tożsamości, kopii zapasowych lub pamięci masowej.
W przypadku umieszczenia bazy danych na oddzielnym serwerze NAS odpowiedź brzmi więc: tak, pod warunkiem spełnienia oceny otwierającej - a nie bezwarunkowe „tak”. Obserwowalny stan powodzenia jest granicą akceptacji; stan niepowodzenia jest granicą wycofania.
FAQ
Czy zdalny serwer PostgreSQL to to samo co katalog danych zamontowany przez NFS?
Nie. Protokół komunikacyjny PostgreSQL jest przeznaczony dla zdalnych klientów, ale jego pliki danych nadal wymagają obsługiwanej semantyki systemu plików.
Czy kopie zapasowe bazy danych również powinny pozostać na serwerze NAS?
Mogą, pod warunkiem że kopia jest spójna na poziomie aplikacji, a jej odtworzenie zostało niezależnie przetestowane poza działającą bazą danych.
Jakie opóźnienie należy zaakceptować?
Użyj wartości p95 transakcji aplikacji i budżetu limitu czasu; niski ping sam w sobie nie dowodzi, że opóźnienie zatwierdzania jest akceptowalne.
Wsparcie i wskazówki
Więcej do przeczytania

Czy galeria hostowana samodzielnie może zachować parowanie zdjęć Live Photo firmy Apple?
Warunkowa decyzja dotycząca domowego serwera w zakresie parowania Apple Live Photo, z kontrolowanymi testami, interpretacją wyników, wycofaniem zmian i konkretnymi odpowiedziami na często zadawane...

Czy można zaimportować Google Takeout i kopie zapasowe telefonu do jednej biblioteki zdjęć?
Warunkowa decyzja dotycząca serwera domowego do łącznego importu zdjęć, obejmująca kontrolowane testy, interpretację wyników, wycofanie zmian i skoncentrowane sekcje FAQ.

Czy Immich może korzystać z zewnętrznej biblioteki bez przejmowania własności plików?
Warunkowa decyzja dotycząca serwera domowego w sprawie własności zewnętrznej biblioteki Immich, obejmująca kontrolowane testy, interpretację wyników, wycofanie zmian i zwięzłą sekcję FAQ.

