Prácticas recomendadas de instalación
Reglas operativas para iniciar clústeres de PostgreSQL que sobrevivan auditorías, actualizaciones y llamadas a las 3 AM.
Cómo usar esta lista
- Aplique durante la primera instalación en producción, no como una solución posterior a un incidente.
- Marque los elementos en la PR de su infraestructura como código antes de marcar el host como operativo.
- Revise después de las actualizaciones de versiones principales: los valores predeterminados y las rutas de inicialización pueden cambiar.
A - Plataforma y Versión
- Ejecute una versión principal compatible en una versión secundaria de SO compatible. Un SO o una versión principal de PostgreSQL sin soporte es un defecto de cumplimiento a la espera de suceder.
- Fije la versión principal de PostgreSQL en los nombres de paquetes o imágenes. Los metapackages de
postgresqlvarían entre distribuciones. - Habilite
--data-checksumseninitdb. No se puede agregar más tarde sin reconstruir. - Use codificación UTF8 y documente la elección de la configuración regional.
C.UTF-8frente a una configuración regional específica afecta el orden de clasificación de forma permanente. - Registre la cadena de versión exacta en el inventario.
SELECT version();en su CMDB.
B - Diseño del Almacenamiento
- Separe WAL en su propio volumen cuando haya E/S intensiva. WAL, que se basa en anexos, compite con la E/S aleatoria del heap.
- Dimensionar el sistema de archivos PGDATA con un margen del 30% o más. Un disco lleno detiene las escrituras y puede corromper la recuperación.
- Use
chmod 700y propiedadpostgres:postgresen PGDATA. Los directorios de datos legibles por el mundo fallan en las auditorías. - Prefiera XFS o ext4 sin
noatimeen los volúmenes de datos. Documente las opciones de montaje en los runbooks. - Evite NFS para PGDATA principal a menos que esté aprobado por el proveedor. La latencia y el bloqueo afectan gravemente.
C - Configuración
- Documente cada GUC no predeterminado con su justificación. Los futuros operadores no podrán adivinar por qué
max_connections = 400. - Establezca valores conservadores para
shared_buffers,work_mem,max_connectionsen la primera pasada. Ajuste con métricas, no con publicaciones de blogs. - Use
include_if_existspara anulaciones locales. Mantengapostgresql.confcompatible con el gestor de paquetes. - Establezca
log_line_prefixcon el pid, usuario, base de datos y nombre de la aplicación. Lo necesitará en el primer incidente. - Habilite
log_connectionsylog_disconnectionshasta que sea estable, luego redúzcalo. Ayuda a rastrear fallos de autenticación.
D - Red y Autenticación
- Denegar por defecto en
pg_hba.conf; permita solo subredes explícitas. La primera coincidencia gana: ordene las reglas cuidadosamente. - Use
scram-sha-256para la autenticación de contraseñas. Retiremd5y prohíbatrusten TCP. - Requiera
hostsslpara las conexiones de aplicaciones remotas. Empareje con certificados TLS válidos. - Enlace
listen_addressessolo a NIC internas. Un oyente público con un HBA débil es un patrón de brecha. - Cree roles dedicados de replicación y administración. Nunca reutilice contraseñas de aplicaciones para la replicación.
E - Gestión de Servicios
- Habilite la unidad systemd al arrancar con un
TimeoutStopSecadecuado. 300s+ en sistemas con memoria grande. - Verifique que
PGDATAen la unidad coincida conSHOW data_directory. Los hosts multiinstancia confunden esto fácilmente. - Pruebe los procedimientos de
reloadvsrestarten un simulacro. Los operadores deben saber cuál configuración necesita cuál. - Envíe los registros a un almacenamiento centralizado. journald solo se pierde en caso de fallo del disco.
- Automatice la copia de seguridad antes de declarar lista para producción. Un runbook vacío no es un clúster.
Preguntas frecuentes
¿El mayor error del primer día?
Abrir pg_hba.conf a 0.0.0.0/0 con autenticación débil. Bloquee la red primero, luego ajuste el rendimiento.
¿Docker para producción?
Posible con disciplina del operador (volúmenes, recursos, copias de seguridad). Muchos equipos prefieren paquetes o la nube administrada para mayor claridad del SLA.
¿Cuánta capacidad libre en disco?
Planifique picos de WAL durante cargas masivas y retrasos de replicación. Mínimo 30% libre; alerte al 20%.
Relacionado
- Conceptos básicos de instalación - ejemplos de instalación de plataforma
- initdb y Directorio de Datos - diseño de PGDATA
- Esenciales de postgresql.conf - primera pasada de ajuste
- pg_hba.conf y Autenticación - reglas de autenticación de red
Versiones de pila: 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+.