Home / Guías / PostgreSQL

PostgreSQL en un VPS: instalar, sintonizar, respaldar

Una instalación PostgreSQL predeterminada se ajusta para una estación de trabajo de 1990. En un VPS de 2 a 8 GB algunos ajustes cambian todo, aquí está la versión corta, con números reales.

1. Instala

apt update && apt install -y postgresql postgresql-contrib
systemctl enable --now postgresql
sudo -u postgres psql -c "SELECT version();"

Ubuntu barcos PostgreSQL 16 el 24.04. Esa versión es lo suficientemente moderna para cualquier cosa que puedas correr.

2. Crear una base de datos y un usuario

sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'strong-password';
CREATE DATABASE appdb OWNER app;
SQL
psql "postgresql://app:strong-password@localhost/appdb" -c "SELECT 1;"

Nunca use el superusuario postgres en una aplicación. Un usuario por aplicación, una base de datos por proyecto.

3. Tune para su RAM

Editar /etc/postgresql/16/main/postgresql.conf y establecer valores basados en el tamaño del servidor:

Ajuste2 GB VPS4 GB VPS8 GB VPS
shared buffers512MB1GB2GB
effective cache size1GB2.5GB5GB
work mem16MB32MB48MB
mantenimiento work mem128 MB256MB512MB
max connections50100150
systemctl restart postgresql
sudo -u postgres psql -c "SHOW shared_buffers;"

Si su aplicación abre cientos de conexiones, ponga PgBouncer delante en lugar de elevar max connections — cada conexión cuesta memoria.

4. Depósitos diarios con rotación

cat > /usr/local/bin/pg-dump-all <<'EOF'
#!/bin/sh
set -e
DIR=/var/backups/postgres
mkdir -p "$DIR"
sudo -u postgres pg_dumpall --globals-only > "$DIR/globals.sql"
for db in $(sudo -u postgres psql -Atc "SELECT datname FROM pg_database WHERE datistemplate = false"); do
  sudo -u postgres pg_dump -Fc "$db" > "$DIR/$db.dump"
done
find "$DIR" -type f -mtime +7 -delete
EOF
chmod +x /usr/local/bin/pg-dump-all

Añadirlo a cron con crontab -e:

30 3 * * * /usr/local/bin/pg-dump-all

Las bombas son instantáneas consistentes; copias de archivo de un directorio de datos en vivo no son. Luego envía los vertederos fuera del sitio - nuestro guía de descanso cubre esa parte.

5. Restaurar un vertedero

sudo -u postgres createdb appdb_restore
sudo -u postgres pg_restore -d appdb_restore /var/backups/postgres/appdb.dump

Respuestas rápidas

¿Puedo abrir PostgreSQL a Internet?

Mejor que no. Mantenlo en localhost y deja que la aplicación hable directamente con ella, o utilice un túnel SSH. Si usted debe exponerlo, permita sólo su IP en el cortafuegos y requiera TLS.

¿Qué plan necesito para PostgreSQL?

2 GB RAM está bien para el desarrollo y aplicaciones pequeñas, 4 GB es cómodo para un sitio web de producción, y 8 GB maneja una base de datos ocupada con caché. El almacenamiento NVMe importa más que núcleos extra aquí.

¿Cómo puedo comprobar qué consultas son lentas?

Habilitar la extensión pg stat statements y ordenar por tiempo medio. Generalmente muestra uno o dos índices perdidos que explican la mayor parte de la carga.

Una cómoda base de datos de producción comienza en Buran-2, 13 €/mo.

Relacionados