Buenas prácticas de CLI
Un resumen condensado de las 25 prácticas más importantes de la CLI de Linux para equipos de DBA y plataforma de PostgreSQL 18.4 - contenido portátil compartido; verificación de estado de scripts comunes.
Busca en todas las páginas de la documentación
Un resumen condensado de las 25 prácticas más importantes de la CLI de Linux para equipos de DBA y plataforma de PostgreSQL 18.4 - contenido portátil compartido; verificación de estado de scripts comunes.
Prefiere SIGTERM sobre SIGKILL en postmaster: Lee postmaster.pid; permite que el checkpoint se complete (Conceptos básicos de CLI de Linux para DBAs).
Ejecuta Postgres bajo systemd o k8s, no postgres & desnudo: Sobrevive a la desconexión de SSH; política de reinicio definida.
Persiste sesiones de operaciones con tmux: iostat largos y colas de logs sobreviven a la desconexión.
df -h y df -i en PGDATA primero: El agotamiento de disco e inodos detienen las escrituras.
du -sh pg_wal cuando el disco aumenta: Problema de archivo WAL o slot de replicación antes de culpar al crecimiento de datos.
Verifica dmesg para el killer OOM: Correlaciona la marca de tiempo con el código de salida 137 del worker de Postgres.
vmstat 1 5 antes de ajustar GUCs de memoria: si/so de swap significa problema de RAM del host, no solo work_mem.
iostat -xz 1 5 antes de debates de índices: %util saturado necesita capacidad de IO o menos lecturas.
pidstat -r en pg_stat_activity.pid activo: Demuestra RSS de ordenación/hash en un backend específico.
Script de paquete de incidentes con marca de tiempo: df, free, vmstat, CSV de actividad, CSV de bloqueos en un tarball.
set -euo pipefail en todos los scripts de bash: Falla rápido; variables indefinidas causan error.
psql -v ON_ERROR_STOP=1 en automatización: El fallo de SQL detiene el script, no continúa silenciosamente.
DATABASE_URL de solo lectura para scripts de triaje: Rol de escriba sin accidentes de escritura.
journalctl -u postgresql en VMs: Líneas de error de los últimos 30 minutos en la línea de tiempo SEV1.
kubectl logs / exec en k8s: Mismo paquete SQL dentro del espacio de nombres de red del pod.
ss -tnp para tormentas de conexiones: Compara con max_connections y límites del pooler.
Nunca rm archivos WAL manualmente: Arregla el archiver o el slot; borrar manualmente rompe la replicación y PITR.
Limita find y grep a PGDATA o al directorio de logs: No escanees / como usuario postgres.
Confirma bin/pg-health.sh en el repositorio de plataforma: Mismo humo localmente, cron de staging, hook post-despliegue.
curl solo para healthchecks HTTP, no SQL: Usa psql para la verdad de la base de datos.
Diferencias de sed -i entre macOS y Linux: Documenta en CONTRIBUTING o usa scripts portátiles en CI.
Los hosts Bastion guardan credenciales de emergencia: No en las laptops de los desarrolladores de aplicaciones para producción.
Empareja a los juniors en la primera ejecución del paquete de incidentes: Previene el reflejo accidental de kill -9.
Adjunta el paquete CLI al ticket post-mortem: Línea de tiempo reproducible para auditores.
Simulacro trimestral: ejecuta el paquete contra staging durante un SEV2 falso: Demuestra que los scripts aún funcionan después de una actualización del SO.
Solo en el sidecar de depuración o bastion. Las imágenes mínimas de producción usan ps y top -b -n 1 de un solo disparo.
Día uno: psql, EXPLAIN. Semana uno: script de paquete de incidentes. Profundizar en iostat/systemd es en colaboración con el DBA (Conceptos básicos de incorporación).
Ambos. Las métricas del host explican por qué Postgres espera; pg_stat_activity muestra quién. Nunca uno sin el otro.
Versiones de la pila: Esta página fue escrita para PostgreSQL 18.4 en Linux (despliegues de systemd y Kubernetes).
Revisado por Chris St. John·Última actualización: 16 jul 2026