Zrzut obejmujący wyłącznie bazę danych może pomijać role obowiązujące w całym klastrze oraz stan zewnętrznego harmonogramu; zweryfikuj każdą klasę obiektów osobno w odizolowanym procesie odtwarzania.
Decyzja ma znaczenie, gdy usługa w stylu PostgreSQL musi odzyskać nie tylko tabele, lecz także loginy, rozszerzenia, uprawnienia i zaplanowane zadania. Dwa konkurencyjne stany to schemat i dane lokalne dla bazy danych oraz obiekty operacyjne obowiązujące w całym klastrze lub zewnętrzne. Zacznij od zapisanej konfiguracji i danych możliwych do usunięcia, obserwuj jedną gałąź naraz i przerwij, jeśli test zwiększa ryzyko utraty danych, uprawnień lub dostępności.
Określ warunki stojące za decyzją dotyczącą zakresu pełnej kopii zapasowej bazy danych
Zapisz stan środowiska przed wprowadzeniem jakichkolwiek zmian: wersje oprogramowania i oprogramowania układowego, tożsamości urządzeń, ścieżkę montowania lub sieciową, wolne miejsce, uprawnienia oraz obserwowany objaw. Punkt odniesienia musi zachowywać wystarczająco dużo szczegółów, aby odtworzyć sytuację, w której usługa w stylu PostgreSQL musi odzyskać nie tylko tabele, lecz także loginy, rozszerzenia, uprawnienia i zaplanowane zadania.
Pierwszym kandydatem jest schemat i dane lokalne dla bazy danych. Drugim są obiekty operacyjne obowiązujące w całym klastrze lub zewnętrzne. Bieżący mechanizm globalnych obiektów pg_dumpall definiuje granicę mechanizmu lub polecenia używaną w teście; nie zastępuje jednak obserwacji z tego konkretnego serwera domowego.
Zapisz warunek akceptacji i warunek przerwania przed uruchomieniem testu rozstrzygającego. Wynik pozytywny musi zmienić dowody przewidywane przez jedną gałąź, pozostawiając niepowiązane usługi bez zmian; wynik negatywny musi przywrócić system do zapisanego stanu, zamiast uruchamiać ciąg spekulatywnych poprawek.
Przetestuj tezę bez obniżania pierwotnego wymagania
Użyj następującego testu rozstrzygającego: odtwórz dane na odizolowanym serwerze, zinwentaryzuj role, wersje rozszerzeń, właścicieli, uprawnienia i wpisy harmonogramu, a następnie uruchom zadanie canary. Zachowaj stałe obciążenie, klienta, ścieżkę, zestaw plików i czas, aby wynik można było przypisać zmiennej, która uległa zmianie.
Użyj odizolowanego odtwarzania PostgreSQL, aby wybrać pole, które rzeczywiście może rozdzielić te gałęzie, a następnie zapisz jego znacznik czasu, kod zakończenia, treść błędu, tożsamość urządzenia lub migawki, opóźnienie, liczbę przesłanych bajtów, uprawnienia i stan odzyskiwania. Pomyślne zakończenie polecenia nie wystarcza, gdy testowana teza dotyczy tożsamości, trwałości lub stanu aplikacji.
Powtórz test raz po ponownym uruchomieniu, ponownym połączeniu, ponownym zamontowaniu lub opróżnieniu pamięci podręcznej, jeśli takie zdarzenie jest częścią pierwotnego warunku. Jeśli pierwszy przebieg jest destrukcyjny lub nie można przywrócić środowiska, przerwij i odtwórz go na kopii możliwej do usunięcia.
pg_dump -Fc appdb > app.dump
pg_dumpall --globals-only > globals.sql
Interpretuj wyniki pozytywne, negatywne i wyjątkowe
WYNIK POZYTYWNY: aplikacje uwierzytelniają się, rozszerzenia ładują się, właściciele się zgadzają, a zaplanowane zadania istnieją z oczekiwanym stanem wyłączenia lub włączenia. Zapisz dokładną wersję, tożsamość i obciążenie, dla których wynik był pozytywny, aby wniosek pozostał warunkowy, zamiast stać się uniwersalnym twierdzeniem.
WYNIK NEGATYWNY: tabele zostają odtworzone, ale brakuje ról, pakietów rozszerzeń, sekretów lub definicji zewnętrznego harmonogramu. Wynik negatywny nie dowodzi automatycznie przeciwnej gałęzi, gdy na obie mogą wpływać sieć, pamięć, uprawnienia lub spójność źródła; przed eskalacją odizoluj te współdzielone zależności.
WYJĄTEK LUB WYNIK NIEJEDNOZNACZNY: pozostaw produkcję nietkniętą i dodaj brakujący eksport na poziomie klastra lub aplikacji do zestawu kopii zapasowych. Zachowaj logi i nie uruchamiaj poleceń naprawczych, czyszczących, niszczących, zmieniających partycjonowanie ani rekursywnie zmieniających własności, dopóki nie będzie istniała kopia możliwa do odzyskania.
Potwierdź decyzję przy pierwotnym obciążeniu
Zastosuj działanie odpowiadające zaobserwowanej gałęzi, a następnie odtwórz pierwotny warunek, a nie jego ograniczony substytut. Decyzja jest prawidłowa tylko wtedy, gdy aplikacje uwierzytelniają się, rozszerzenia ładują się, właściciele się zgadzają, a zaplanowane zadania istnieją z oczekiwanym stanem wyłączenia lub włączenia przez dwa cykle albo podczas odpowiedniego ponownego uruchomienia, uśpienia, przerwania lub przejścia obciążenia.
Użyj kopii zapasowych baz danych przed aktualizacją, aby sprawdzić najbliższy zależny proces, ale pozostaw pierwotny wyzwalacz bez zmian. Niepowiązane zestawy danych, udziały, kontenery, użytkownicy i punkty odzyskiwania muszą zachować wcześniejszy dostęp i harmonogram.
Granica przerwania jest jednoznaczna: jeśli tabele zostają odtworzone, ale brakuje ról, pakietów rozszerzeń, sekretów lub definicji zewnętrznego harmonogramu, wróć do ostatniej zweryfikowanej konfiguracji, zachowaj dowody i eskaluj do dokładniejszego testu platformy lub sprzętu tylko wtedy, gdy dana gałąź daje się powtórzyć.
Po uzyskaniu docelowego wyniku porównaj go z oddzielnymi kopiami zapasowymi stanu aplikacji, aby poprawka nie przeniosła ryzyka do sąsiedniej usługi. Pomyślny test docelowy z nowym błędem kopii zapasowej, tożsamości, limitu czasu lub dostępności nadal oznacza nieudaną zmianę.
FAQ
W przypadku pełnego zakresu kopii zapasowej bazy danych pozostałe wyszukiwania zwykle dotyczą tego, czy pg_dump obejmuje role logowania, czy pliki binarne rozszerzeń znajdują się w zrzucie oraz gdzie są przechowywane zaplanowane zadania. Poniższe odpowiedzi oddzielają te przypadki brzegowe od głównej decyzji.
Granica akceptacji nie zmienia się: aplikacje uwierzytelniają się, rozszerzenia ładują się, właściciele się zgadzają, a zaplanowane zadania istnieją z oczekiwanym stanem wyłączenia lub włączenia. Jeśli kolejny warunek zmienia system plików, tożsamość, ścieżkę sieciową lub wersję aplikacji, powtórz tylko test rozstrzygający, którego dotyczy ta zmiana.
Przerwij rozszerzanie eksperymentu, gdy tabele zostają odtworzone, ale brakuje ról, pakietów rozszerzeń, sekretów lub definicji zewnętrznego harmonogramu. W tym momencie pozostaw produkcję nietkniętą i dodaj brakujący eksport na poziomie klastra lub aplikacji do zestawu kopii zapasowych; zachowaj dowody przed eskalacją do właściciela platformy, pamięci masowej lub sprzętu.
Czy pg_dump obejmuje role logowania?
Pojedynczy pg_dump bazy danych nie przechwytuje wszystkich ról obowiązujących w całym klastrze; wyeksportuj obiekty globalne osobno.
Czy pliki binarne rozszerzeń znajdują się w zrzucie?
Nie. Zrzut rejestruje obiekty rozszerzeń, ale na serwerze odtwarzania muszą istnieć zgodne pakiety.
Gdzie są przechowywane zaplanowane zadania?
To zależy od harmonogramu. Rozszerzenia baz danych, kontenery cron i zegary hosta wymagają różnych ścieżek kopii zapasowych.
W przypadku pełnego zakresu kopii zapasowej bazy danych praktyczna odpowiedź nadal jest warunkowa: aplikacje uwierzytelniają się, rozszerzenia ładują się, właściciele się zgadzają, a zaplanowane zadania istnieją z oczekiwanym stanem wyłączenia lub włączenia. Gdy tabele zostają odtworzone, ale brakuje ról, pakietów rozszerzeń, sekretów lub definicji zewnętrznego harmonogramu, pozostaw produkcję nietkniętą i dodaj brakujący eksport na poziomie klastra lub aplikacji do zestawu kopii zapasowych; częściowy sukces, który nie przetrwa pierwotnego obciążenia, nie oznacza zgodności.
Wsparcie i wskazówki
Więcej do przeczytania

Lista kontrolna migracji NFS dla przemianowanych zbiorów danych i stabilnych uchwytów plików
Załóż, że deskryptory plików mogą się zmienić, gdy zmieni się tożsamość pamięci masowej. Wstrzymaj klientów, celowo przełącz eksport, zamontuj ponownie i zweryfikuj otwarte oraz...

Przewodnik rozwiązywania problemów z klientem SMB dla systemów Windows, macOS i Linux
Używaj tego samego serwera, konta, udziału i operacji na plikach na każdym kliencie, aby nie mieszać problemów z wykrywaniem, poświadczeniami, zasadami ani pamięcią masową.

Lista kontrolna rotacji sekretów serwera domowego dla aplikacji, baz danych i kopii zapasowych
Potraktuj rotację jak migrację zależności: zmapuj każdego konsumenta, w miarę możliwości nakładaj dane uwierzytelniające, zweryfikuj nową wartość, a następnie unieważnij starą i przetestuj odzyskiwanie.

