Jak sprawdzić, czy kopia zapasowa bazy danych zawiera użytkowników, rozszerzenia i zaplanowane zadania

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

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

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.