Integritätsprüfung für PostgreSQL-Datenbankdatendateien


12

Woher weiß ich, dass meine Datenbank bei der Ausführung eines PostgreSQL-Datenbanksystems eine 100% ige Integrität aufweist? Grundsätzlich kann ich feststellen, ob meine Datendateien und -seiten zu 100% fehlerfrei sind.

In der Microsoft SQL Server-Welt gibt es einen Befehl, mit dem Sie DBCC CHECKDB ausführen können, um festzustellen, ob Probleme vorliegen. Hier ist ein Link, wenn Sie mehr über den Befehl erfahren möchten. DBCC CHECKDB (Transact-SQL)

Ich bin eine paranoide, datenbankintegritätsorientierte Person (was jeder tun sollte, der mit der Datenbank in einer DBA-Rolle arbeitet), und diese Art von Dingen macht es mir schwer, nachts gut zu schlafen. Ein solches Dienstprogramm ist ein Muss! Google-Suchanfragen haben einige Versuche mit Tools wie diesem unternommen. Meiner Meinung nach kann ich diesem Tool nur vertrauen, wenn es vom PostgreSQL-Projekt offiziell akzeptiert wird.

Hier finden Sie einige Links zu Personen, die ähnliche Fragen stellen, für die ich keine endgültige Antwort halte. Und meiner Meinung nach zeigt sich, dass PostgreSQL einige Tools haben muss, die Oracle und Microsoft SQL Server zu haben scheinen.

Der erste Link ist der interessanteste, den ich zu diesem Thema gefunden habe. Ich denke, ein Kommentar zu dem Artikel, der es wahrscheinlich zusammenfasst, besagt: "Postgres ist ziemlich lahm, wenn es darum geht, Datenbankbeschädigungen zu identifizieren und zu reparieren. Die einzige Möglichkeit, dies zu erkennen, besteht darin, die Datenbank zu sichern oder * aus jeder Tabelle in der Datenbank auszuwählen . "

So schützt PostgreSQL vor teilweisem Schreiben von Seiten und vor Beschädigung von Daten

Überprüfen der Daten und der Beschädigung der Indexdatei - Dev Shed

Hilfe: Mein Tisch ist beschädigt!

PostgreSQL: Beschädigter Primärschlüssel, inkonsistente Tabelle

Ich glaube, es besteht die Möglichkeit, dass 9.3 einige Korruptionsprüfungsfunktionen aufweist. Es scheint zu hoffen, dass Auslagerungsdateien nach Belieben überprüft werden. Wenn Sie ZFS und / oder eine zukünftige Version von Postgres mit Seitenprüfungssummierung in Betracht ziehen, sieht die Sache also gut aus. https://commitfest.postgresql.org/action/patch_view?id=759

UPDATE: 14. JANUAR 2012 - Die Verwendung eines auf ZFS basierenden Dateisystems scheint eine Beschädigung zu erkennen, indem jeder Datenblock überprüft wird. Ich muss mich weiter damit befassen und herausfinden, ob dies eine Lösung ist, die es einem ermöglicht, nachts gut zu schlafen, wenn man weiß, dass ihre Datenbankdaten nicht unbemerkt beschädigt werden.

UPDATE: 17. JANUAR 2012 - So finden Sie heraus, welche Dateien mit ZFS beschädigt sind. http://docs.oracle.com/cd/E18752_01/html/819-5461/gbbwl.html#gbcuz

UPDATE: 14-APR-2014 9.3 hat Datenprüfsummen erhalten. https://wiki.postgresql.org/wiki/What's_new_in_PostgreSQL_9.3


2
Mit Integrität meinte ich die Integrität der Auslagerungsdateien und dergleichen. Die Art von Dingen, die Sie normalerweise nur sehen, wenn Sie eine Abfrage schreiben, die zufällig auf eine Seite mit einer Beschädigung trifft. Wenn beispielsweise ein Festplattenlaufwerk ausfällt, werden möglicherweise einige Daten auf dem Plattenteller fehlerhaft. Wie würdest du das erkennen?
Kuberchaun

Antworten:


8

PostgreSQL vor 9.3 hatte keine Blockprüfsummen. Die Funktion wurde in 9.3 hinzugefügt (lange nachdem diese Frage gestellt wurde).

Um Ihre Bedürfnisse zu befriedigen, würde ich wahrscheinlich meine eigenen Prüfsummen (Trigger?) Entwickeln - und an Attributwerten arbeiten, nicht an Datenseiten.


4
Könnte es wert sein, hinzugefügt zu werden, dass Sie seit Postgres 9.3 optional Prüfsummen
aktivieren
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.