Verifica dell'integrità dei file di dati del database PostgreSQL


12

Quando eseguo un sistema di database PostgreSQL come faccio a sapere se il mio database nel suo insieme ha integrità al 100%? Fondamentalmente come faccio a sapere se i miei file di dati e le mie pagine sono tutti buoni al 100% senza corruzione?

Nel mondo di Microsoft SQL Server c'è un comando che puoi eseguire DBCC CHECKDB che ti dirà se ci sono problemi. Ecco un link se sei interessato a saperne di più sul comando. DBCC CHECKDB (Transact-SQL)

Sono una persona paranoica e attenta all'integrità del database (come dovrebbe essere chiunque lavori con il database in un ruolo di tipo DBA) e questo tipo di cose mi rende difficile dormire bene la notte. Un'utilità come questa è d'obbligo! Ricerche su Google hanno trovato alcuni tentativi di strumenti come questo e secondo me a meno che non sia uno strumento ufficiale accettato dal progetto PostgreSQL, non mi fiderò di qualcosa di così importante.

Ecco alcuni link a persone che fanno domande simili con quella che non considero una vera risposta definitiva. E a mio avviso mostra che PostgreSQL deve disporre di alcuni strumenti che Oracle e Microsoft SQL Server sembrano avere.

Il primo link è il più interessante che ho trovato su questo argomento. Penso che un commento sull'articolo che probabilmente lo riassume affermi: "Postgres è piuttosto zoppo quando si tratta di identificare il danneggiamento del database e ripararlo. L'unico modo per rilevarlo è scaricare il database o selezionare * da ogni tabella del database ".

Come PostgreSQL protegge dalla scrittura parziale delle pagine e dalla corruzione dei dati

Verifica del danneggiamento dei dati e dei file di indice - Dev Shed

Aiuto: il mio tavolo è corrotto!

PostgreSQL: chiave primaria danneggiata, tabella incoerente

Credo che ci sia una possibilità che 9.3 possa avere alcune funzionalità di controllo della corruzione. Sembra che ci sia speranza di avere il controllo dei file di paging sommati se si sceglie. Quindi le cose sembrano brillanti se consideri l'uso di ZFS e / o una versione futura di Postgres con il sommario del controllo delle pagine. https://commitfest.postgresql.org/action/patch_view?id=759

AGGIORNAMENTO: 14-GEN-2012 - Sembra che l'utilizzo di un file system basato su ZFS sia in grado di rilevare la corruzione verificando la somma di ogni blocco di dati. Dovrò approfondire ulteriormente questo aspetto e vedere se si tratta di una soluzione per consentire di dormire bene la notte sapendo che i dati del loro database non stanno corrompendo silenziosamente.

AGGIORNAMENTO: 17-GEN-2012 - Come trovare quali file sono corrotti con ZFS. http://docs.oracle.com/cd/E18752_01/html/819-5461/gbbwl.html#gbcuz

AGGIORNAMENTO: 14-APR-2014 9.3 ha ottenuto checksum dei dati. https://wiki.postgresql.org/wiki/What's_new_in_PostgreSQL_9.3


2
Per integrità intendevo integrità dei file di paging e così via. Il tipo di cose che vedi normalmente solo se scrivi query che capita di colpire una pagina corrotta. Ad esempio, quando un'unità disco inizia a non funzionare, alcuni dei dati sul piatto potrebbero iniziare a non funzionare. Come lo vedresti?
Kuberchaun,

Risposte:


8

PostgreSQL prima della 9.3 non aveva checksum a blocchi. La funzione è stata aggiunta in 9.3 (molto tempo dopo che questa domanda è stata pubblicata).

Per rispondere alle tue esigenze, probabilmente svilupperei il mio checksum (trigger?), Lavorando sui valori degli attributi, non sulle pagine di dati.


4
Vale la pena aggiungere che da Postgres 9.3 puoi abilitare facoltativamente checksum
a_horse_with_no_name
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.