PDU: herramienta de código abierto para la exportación completa de bases de datos PostgreSQL sin conexión y la recuperación selectiva de datos mediante WAL
PDU permite recuperar bases de datos PostgreSQL fuera de línea mediante la reconstrucción de metadatos, la exportación de tablas y la lectura de registros WAL para la recuperación selectiva de registros.
Cuando una instancia de PostgreSQL no puede iniciarse, ya no es posible utilizar las herramientas SQL habituales. PDU (PostgreSQL Data Unloader) es una herramienta de recuperación de código abierto pensada para estos casos. Accede directamente a los archivos de datos de PostgreSQL y a los archivos WAL archivados, sin alterar el directorio de datos original.
PDU es capaz de reconstruir los metadatos de bases de datos, esquemas y tablas incluso cuando la base de datos se encuentra fuera de línea. Una vez que identifica la estructura, permite exportar una tabla, un esquema o toda la base de datos mediante un único comando. El resultado se genera en formato CSV, lo que facilita tanto la revisión de los datos recuperados como su importación a otra instancia de PostgreSQL.
Si se producen operaciones accidentales de DELETE o UPDATE, PDU también puede recuperar los datos de los registros afectados utilizando el WAL. Este método de recuperación no depende de los restos de tuplas que puedan quedar antes de que se ejecute VACUUM. En cambio, analiza los registros del WAL disponibles en una réplica o en los archivos de WAL y reconstruye, a partir de ellos, los registros eliminados o las versiones de los registros previos a la actualización. En consecuencia, el período durante el cual es posible recuperar los datos está determinado por la disponibilidad del WAL.
Entre las funcionalidades disponibles actualmente se incluyen:
- exploración sin conexión de los metadatos de bases de datos, esquemas y tablas de PostgreSQL
- exportación de una tabla, un esquema o una base de datos completa al formato CSV
- Lectura directa de los archivos de datos (heap) y TOAST de PostgreSQL
- Recuperación, a partir del WAL, de registros eliminados y de las versiones previas de los registros antes de ser actualizadas
- soporte de recuperación para corrupción del catálogo, DELETE/UPDATE accidentales y archivos de datos dañados
- soporte para PostgreSQL 14 a 18
PDU está diseñado como una herramienta de apoyo para la recuperación en situaciones de emergencia. No reemplaza los respaldos, la recuperación de un punto en el tiempo (PITR) ni los procedimientos habituales de recuperación de PostgreSQL.
Repositorio del proyecto: https://github.com/wublabdubdub/PDU-PostgreSQLDataUnloader
Agradecemos cualquier comentario, especialmente sobre el análisis de estructuras heap/TOAST, la reconstrucción de metadatos en modo offline, la decodificación de WAL, los tipos de datos soportados y los escenarios límite durante la recuperación.

