Comprobación de integridad del archivo de datos de la base de datos PostgreSQL


12

Al ejecutar un sistema de base de datos PostgreSQL, ¿cómo sé que mi base de datos en su conjunto tiene un 100% de integridad? Básicamente, ¿cómo sé si mis archivos y páginas de datos son todos 100% buenos sin corrupción?

En el mundo de Microsoft SQL Server hay un comando que puede ejecutar DBCC CHECKDB que le dirá si hay problemas. Aquí hay un enlace si está interesado en aprender más sobre el comando. DBCC CHECKDB (Transact-SQL)

Soy una persona paranoica de integridad de la base de datos (lo que debería ser cualquier persona que trabaje con la base de datos en un rol tipo DBA) y este tipo de cosas me dificulta dormir bien por la noche. ¡Una utilidad como esta es imprescindible! Las búsquedas en Google han encontrado algunos intentos de herramientas como esta y, en mi opinión, a menos que sea una herramienta oficialmente aceptada por el proyecto PostgreSQL, no confiaré en algo tan importante.

Aquí hay algunos enlaces a personas que hacen preguntas similares con lo que considero que no hay una respuesta definitiva real. Y en mi opinión muestra que PostgreSQL necesita tener algunas herramientas en su lugar que Oracle y Microsoft SQL Server parecen tener.

El primer enlace es el más interesante que he encontrado sobre este tema. Creo que un comentario sobre el artículo que probablemente lo resume dice: "Postgres es bastante tonto cuando se trata de identificar la corrupción de la base de datos y repararla. La única forma de detectarlo es volcando la base de datos o seleccionando * de cada tabla en la base de datos ".

Cómo PostgreSQL protege contra la escritura parcial de páginas y la corrupción de datos

Comprobación de datos y corrupción de archivos de índice - Dev Shed

Ayuda: ¡mi mesa está corrupta!

PostgreSQL: clave primaria corrupta, tabla inconsistente

Creo que existe la posibilidad de que 9.3 tenga algunas características de verificación de corrupción. Parece que puede haber esperanza de que se verifiquen los archivos de la página si se elige. Por lo tanto, las cosas se ven brillantes si considera usar ZFS y / o una versión futura de Postgres con suma de verificación de página. https://commitfest.postgresql.org/action/patch_view?id=759

ACTUALIZACIÓN: 14 DE ENERO DE 2012: parece que el uso de un sistema de archivos basado en ZFS puede detectar la corrupción al verificar cada bloque de datos. Tendré que investigar esto más a fondo y ver si esto es una solución alternativa para permitir que uno duerma bien por la noche sabiendo que los datos de su base de datos no se corrompen silenciosamente.

ACTUALIZACIÓN: 17-ENE-2012 - Cómo encontrar qué archivos están corruptos con ZFS. http://docs.oracle.com/cd/E18752_01/html/819-5461/gbbwl.html#gbcuz

ACTUALIZACIÓN: 14-ABR-2014 9.3 obtuvo sumas de verificación de datos. https://wiki.postgresql.org/wiki/What's_new_in_PostgreSQL_9.3


2
Por integridad me refería a la integridad de los archivos de la página y tal. El tipo de cosas que solo ves normalmente si escribes una consulta que llega a una página que tiene corrupción. Por ejemplo, cuando una unidad de disco comienza a fallar, algunos de los datos en el plato pueden comenzar a fallar. ¿Cómo verías esto?
Kuberchaun

Respuestas:


8

PostgreSQL anterior a 9.3 no tenía sumas de verificación de bloque. La función se agregó en 9.3 (mucho después de que se publicara esta pregunta).

Para responder a sus necesidades, probablemente desarrollaría mi propia suma de comprobación (¿disparadores?), Trabajando en valores de atributos, no en páginas de datos.


44
Podría valer la pena agregar que desde Postgres 9.3 puedes habilitar opcionalmente sumas de verificación
a_horse_with_no_name
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.