Copia de seguridad a nivel de objeto
La copia de seguridad a nivel de objeto recupera esquemas, tablas o particiones específicas sin restaurar todo el directorio de datos de PostgreSQL. Utilice los filtros de pg_dump y pg_restore dirigidos.
Receta
Volcado nocturno a nivel de tabla para tablas de libro mayor críticas.
pg_dump -h prod.internal -U backup -Fc \
-t public.orders -t public.payments \
-f /backup/ledger_$(date +%F).dump appdb# Restaurar una tabla a un esquema de recuperación para investigación
pg_restore -h prod.internal -U dba -d appdb \
-t public.orders --schema=recovery_orders /backup/ledger_2026-07-09.dumpCuándo usar esto: Error del operador (DROP TABLE), corrupción parcial o retención legal sobre un subconjunto de datos.
Ejemplo práctico
Copia de seguridad de esquema y exportación a nivel de partición:
# Esquema completo
pg_dump -h prod.internal -U backup -Fc -n reporting \
-f /backup/reporting_schema.dump appdb
# Partición única (particionamiento declarativo)
pg_dump -h prod.internal -U backup -Fc \
-t 'public.events_2026_07' \
-f /backup/events_2026_07.dump appdb-- Red de seguridad dentro de la base de datos antes de una migración arriesgada
CREATE TABLE orders_backup_20260709 AS TABLE orders;
-- O clonar solo la estructura
CREATE TABLE orders_restored (LIKE orders INCLUDING ALL);# Restaurar datos en una tabla nueva, intercambiar con renombrar (expandir-contraer)
pg_restore -h prod.internal -d appdb --data-only \
-t public.orders /backup/ledger.dumpLo que esto demuestra:
-ty-nlimitan el alcance del volcado para volcados más rápidos y archivos más pequeños.- Restaurar en un esquema alternativo para validación antes del cambio.
CREATE TABLE ASdentro de la base de datos es una instantánea rápida de objetos sin volcado del sistema de archivos.
Análisis profundo
Cuándo usar copias a nivel de objeto
| Escenario | Enfoque |
|---|---|
| Tabla eliminada | pg_restore -t del último volcado nocturno |
| Migración incorrecta en un esquema | Restaurar -n a una base de datos temporal, comparar y fusionar |
| Exportación legal | Volcar tablas específicas con lista de columnas (vistas) |
| Base de datos grande, error pequeño | Evitar restauraciones completas de varias horas |
Patrón de intercambio y restauración
- Restaurar objeto a un esquema o base de datos
recovery_*. - Validar recuentos de filas y sumas de verificación.
- Renombrar la tabla de producción a
*_broken. - Renombrar la tabla de recuperación al nombre de producción en una transacción.
- Recrear índices y claves foráneas si es necesario.
Limitaciones
- Las claves foráneas de otras tablas pueden bloquear el orden de restauración.
- Las secuencias deben reiniciarse después de una restauración solo de datos.
- Los volcados lógicos no capturan transacciones no confirmadas en el instante del fallo.
Trampas comunes
- Sin volcado de tabla reciente - La recuperación a un punto en el tiempo (PITR) de clúster completo es la única opción. Solución: Tablas de nivel 0 en volcados nocturnos dedicados con
-t. - Restaurar sobre tabla activa sin renombrar - Caos de claves duplicadas. Solución: Restaurar a una tabla lateral; intercambiar durante la ventana de mantenimiento.
- Objetos dependientes faltantes - Restaurar tabla sin índices. Solución: Restaurar
--section=post-datao definición completa de tabla. - Padre vs hijo de partición en volcado - Volcar el nombre de relación de partición correcto. Solución:
\d+ parentpara listar tablas hijas. - RLS bloquea el rol de restauración - Datos parciales en el volcado. Solución: Copia de seguridad del rol con
BYPASSRLSo superusuario para volcados regulados.
Alternativas
| Alternativa | Usar cuando | No usar cuando |
|---|---|---|
| PITR a un clúster nuevo + copiar tabla | No existe volcado de objeto | Se necesita una solución rápida solo de tabla |
Instantánea CREATE TABLE AS | Copia rápida en la misma base de datos | Recuperación ante desastres fuera del sitio |
| Replicación lógica | Copia continua a un almacén de datos | Recuperación de errores puntuales |
Preguntas frecuentes
¿Volcado de objeto desde standby?
Sí. pg_dump -h standby reduce la carga del primario; la instantánea es de la posición de reproducción del standby.
¿Puedo restaurar solo índices?
Use pg_restore --section=post-data con el filtro -t después de cargar los datos.
¿Múltiples tablas con orden de FK?
pg_restore maneja el orden de dependencia en formato personalizado; use un único archivo de volcado para tablas relacionadas.
¿Tablas pgvector / PostGIS?
Incluya objetos de extensión en el volcado; asegúrese de que el destino tenga pgvector 0.8+ y PostGIS 3.5+ instalados antes de restaurar.
¿Cuánto tiempo retener volcados de objetos?
Alinear con la retención legal; las tablas de nivel 0 a menudo requieren un mínimo de 30-90 días más allá de la ventana de PITR.
Relacionado
- pg_dump & pg_restore - detalles del formato
- Conceptos básicos de copia de seguridad - resumen de la estrategia
- Conceptos básicos de PITR - cuando el volcado de objeto es demasiado antiguo
- Estrategia de reversión - seguridad de migración
Versiones de la pila: Esta página se escribió para PostgreSQL 18.4 (estable 18, mantenimiento 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x y PostGIS 3.5+.