Versionado y Política de Actualización
PostgreSQL lanza versiones mayores anualmente con nuevas funcionalidades y versiones menores con correcciones de seguridad y errores. Planifica las actualizaciones antes de la fecha de fin de vida (EOL). PostgreSQL 18 es la versión estable actual; la 17 permanece en mantenimiento. Considera las actualizaciones menores como obligatorias y las mayores como proyectos.
Receta
SELECT version();
SHOW server_version_num;
-- Después de la actualización, ejecuta ANALYZE para las estadísticas del planificador
ANALYZE;# Actualización menor (mismo directorio de datos, binarios nuevos)
pg_ctl stop -D $PGDATA
# instala el punto de lanzamiento postgresql-18.x
pg_ctl start -D $PGDATACuándo usar esto: Cuando establezcas la política de la organización para versiones soportadas, la cadencia de parches y las ventanas de migración importantes.
Ejemplo Práctico
-- Ayudantes para la comprobación de compatibilidad del catálogo después de una actualización mayor
SELECT extname, extversion FROM pg_extension ORDER BY 1;
SELECT count(*) AS invalid_indexes
FROM pg_index i
JOIN pg_class c ON c.oid = i.indexrelid
WHERE NOT i.indisvalid;Lo que esto demuestra:
server_version_numse puede comparar como un entero en scripts.- Las extensiones pueden necesitar
ALTER EXTENSION ... UPDATEdespués de la actualización del servidor. - Los índices inválidos indican trabajo de reconstrucción después de
pg_upgradeo restauración.
Profundización
Tipos de Lanzamiento
- Mayor (17 a 18): cambios en el catálogo,
initdbno es necesario si se usapg_upgradeo replicación lógica. - Menor (18.3 a 18.4): reemplazo binario directo, mismo formato PGDATA.
- EOL (Fin de Vida): las versiones no soportadas no reciben correcciones de seguridad.
Rutas de Actualización
| Ruta | Tiempo de Inactividad | Notas |
|---|---|---|
| pg_upgrade | Minutos a horas | Rápido, mismo host o nuevo directorio de datos |
| Replicación Lógica | Bajo | Amigable con la diferencia de versiones, paso de corte |
| Volcado/Restauración | Alto | Modelo mental más simple, más lento a escala |
Base de la Política
- Ejecuta la última versión menor de la versión mayor soportada dentro de los 30 días posteriores a su lanzamiento.
- Actualización mayor dentro de los 6 meses posteriores al anuncio de EOL de la versión mayor anterior.
- Prueba las extensiones (pgvector, PostGIS) en staging antes de la actualización mayor en producción.
Errores Comunes
- Omitir versiones menores: Las CVE de seguridad solo se incluyen en las versiones menores. Solución: Automatiza las actualizaciones de
apt/yum/dnfo de imágenes mensualmente. - Retraso en la ABI de extensiones: PostGIS y pgvector necesitan compilaciones coincidentes por cada versión mayor. Solución: Fija las versiones en el runbook antes del fin de semana de actualización.
- Estadísticas reiniciadas: Las actualizaciones mayores pueden invalidar los planes hasta que se ejecute
ANALYZE. Solución: ProgramaANALYZEo confía en los umbrales de análisis deautovacuum. - Mezcla de versiones de replicación: Los suscriptores pueden ser más nuevos; los publicadores más antiguos con cuidado. Solución: Lee la matriz de compatibilidad de replicación lógica.
- Deriva de bibliotecas del SO: La discrepancia entre
libpqy el servidor causa errores de protocolo extraños. Solución: Actualiza las bibliotecas cliente junto con el servidor.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Actualización menor automática gestionada | RDS/Cloud SQL maneja los parches | Menos control sobre el momento |
| Blue/green para actualización mayor | Nuevo clúster más corte | Doble almacenamiento durante la migración |
| Mantenerse una versión mayor por detrás | Más pruebas de comunidad | Ventana más corta para nuevas funcionalidades |
Preguntas Frecuentes
¿Está PostgreSQL 18.4 listo para producción?
Sí, para equipos que siguen las versiones estables; valida las extensiones y los planes de carga de trabajo en staging.
¿Cuánto tiempo se soporta PostgreSQL 17?
Cinco años desde su lanzamiento inicial según la política de la comunidad; confirma las fechas de EOL actuales en postgresql.org.
¿Necesito REINDEX después de la actualización?
Generalmente no. Reindexa si pg_upgrade reporta índices inválidos o después de actualizaciones de colación.
¿Pueden las aplicaciones permanecer conectadas durante una actualización menor?
Breves reinicios desconectan las sesiones; usa el failover del pooler o una ventana de mantenimiento.
¿Qué pasa con los forks de Postgres?
Trata la política de versiones por separado; este sitio documenta PostgreSQL de la comunidad.
Relacionados
- Conceptos Básicos de PostgreSQL -
version()y recorrido del clúster - Conceptos Básicos de Instalación - canales de empaquetado
- Conceptos Básicos de Gobernanza - propiedad del calendario de actualizaciones
Versiones de Stack: Esta página fue escrita para PostgreSQL 18.4 (estable 18, mantenimiento 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x, y PostGIS 3.5+.