Kontrola integralności pliku danych bazy danych PostgreSQL

12

Kiedy mam uruchomić system bazy danych PostgreSQL, skąd mam wiedzieć, że moja baza danych jako całość ma 100% integralności? Zasadniczo skąd mam wiedzieć, czy wszystkie moje pliki danych i strony są w 100% dobre i nie powodują uszkodzenia?

W świecie Microsoft SQL Server istnieje polecenie, które można wykonać DBCC CHECKDB, które poinformuje cię, jeśli wystąpią problemy. Oto link, jeśli chcesz dowiedzieć się więcej o poleceniu. DBCC CHECKDB (Transact-SQL)

Jestem osobą z nastawieniem na integralność bazy danych, którą powinien mieć każdy, kto pracuje z bazą danych w roli typu DBA) i tego rodzaju rzeczy utrudniają mi dobry sen w nocy. Takie narzędzie jest koniecznością! Wyszukiwania w Google znalazły kilka prób użycia takich narzędzi i moim zdaniem, chyba że jest to oficjalne narzędzie zaakceptowane przez projekt PostgreSQL, nie ufam temu za coś tak ważnego.

Oto kilka linków do osób zadających podobne pytania, na które nie uważam prawdziwej ostatecznej odpowiedzi. I moim zdaniem pokazuje, że PostgreSQL musi posiadać narzędzia, które wydają się mieć Oracle i Microsoft SQL Server.

Pierwszy link jest najciekawszy, jaki znalazłem na ten temat. Myślę, że komentarz do artykułu, który prawdopodobnie go podsumowuje, brzmi: „Postgres jest dość kiepski, jeśli chodzi o identyfikację uszkodzenia bazy danych i naprawę. Jedynym sposobem na jej wykrycie jest zrzucenie bazy danych lub wybranie * z każdej tabeli w bazie danych . ”

Jak PostgreSQL chroni przed częściowym zapisem strony i uszkodzeniem danych

Sprawdzanie uszkodzenia danych i plików indeksu - Dev Shed

Pomoc: mój stół jest uszkodzony!

PostgreSQL: Uszkodzony klucz podstawowy, niespójna tabela

Uważam, że istnieje szansa, że ​​9.3 może mieć pewne funkcje sprawdzania korupcji. Wygląda na to, że istnieje nadzieja na zsumowanie sprawdzania plików stron, jeśli ktoś zechce. Więc wszystko wygląda dobrze, jeśli weźmiesz pod uwagę użycie ZFS i / lub przyszłej wersji Postgres z sumowaniem sprawdzania strony. https://commitfest.postgresql.org/action/patch_view?id=759

AKTUALIZACJA: 14-STYCZNIA-2012 - Wydaje się, że użycie systemu plików opartego na ZFS może wykryć uszkodzenie poprzez sprawdzenie sumowania każdego bloku danych. Będę musiał przyjrzeć się temu głębiej i sprawdzić, czy jest to rozwiązanie, które pozwala dobrze spać w nocy, wiedząc, że dane ich bazy danych nie ulegają po cichu uszkodzeniu.

AKTUALIZACJA: 17-STYCZNIA-2012 - Jak znaleźć pliki uszkodzone w ZFS. http://docs.oracle.com/cd/E18752_01/html/819-5461/gbbwl.html#gbcuz

AKTUALIZACJA: 14-APR-2014 9.3 otrzymał sumy kontrolne danych. https://wiki.postgresql.org/wiki/What's_new_in_PostgreSQL_9.3

Kuberchaun
źródło
2
Przez integralność rozumiałem integralność plików stron i tym podobne. Typ rzeczy, które widzisz tylko wtedy, gdy piszesz zapytanie, które trafia na stronę z uszkodzoną stroną. Na przykład, gdy napęd dyskowy zaczyna ulegać awarii, niektóre dane na talerzu mogą ulec uszkodzeniu. Jak byś to zauważył?
Kuberchaun

Odpowiedzi:

8

PostgreSQL wcześniejszy niż 9.3 nie miał blokowych sum kontrolnych. Funkcja została dodana w wersji 9.3 (długo po opublikowaniu tego pytania).

Aby odpowiedzieć na twoje potrzeby, prawdopodobnie opracowałbym własne sumowanie kontrolne (wyzwalacze?) - pracując na wartościach atrybutów, a nie na stronach danych.

filiprem
źródło
4
Warto dodać, że od Postgres 9.3 możesz opcjonalnie włączyć sumy kontrolne
a_horse_w_na_name