Zuhause / Guides / PostgreSQL

PostgreSQL auf einem VPS: install, tune, back up

Eine Standard-PostgreSQL-Installation ist auf eine Workstation der 1990er Jahre abgestimmt. Auf einem 2-8 GB VPS ändern einige Einstellungen alles - hier ist die Kurzversion mit echten Zahlen.

1. Installieren

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

Ubuntu liefert PostgreSQL 16 am 24.04. Diese Version ist modern genug für alles, was Sie wahrscheinlich ausführen werden.

2. Erstellen einer Datenbank und eines Benutzers

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;"

Verwenden Sie niemals den postgres superuser in einer Anwendung. Ein Nutzer pro App, eine Datenbank pro Projekt.

3. Tunen Sie sich für Ihren RAM

Edit /etc/postgresql/16/main/postgresql.conf und Werte basierend auf der Servergröße festlegen:

Einstellung2 GB VPS4 GB VPS8 GB VPS
shared buffers512 MB1 GB2 GB
effective cache size1 GB2,5 GB5 GB
work mem16 MB32 MB48 MB
Maintenance work mem128 MB256 MB512 MB
max Verbindungen50100150
systemctl restart postgresql
sudo -u postgres psql -c "SHOW shared_buffers;"

Wenn ihre app hunderte von verbindungen öffnet, setzen sie pgbouncer vor, anstatt max verbindungen anzuheben - jede verbindung kostet speicher.

4. Tägliche Deponien mit Rotation

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

Fügen Sie es zu cron mit crontab -e:

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

Dumps sind konsistente Snapshots; Dateikopien eines Live-Datenverzeichnisses sind es nicht. Dann verschiffen Sie die Deponien off-site - unsere Restic Guide deckt diesen Teil ab.

5. Wiederherstellung einer Deponie

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

Schnelle Antworten

Kann ich PostgreSQL im Internet öffnen?

Besser nicht. Halten sie es auf localhost und lassen sie die app direkt mit ihr sprechen, oder verwenden sie einen z1z-tunnel. Wenn sie es freilegen müssen, lassen sie nur ihre ip in der firewall und benötigen sie z2z.

Welchen Plan benötige ich für PostgreSQL?

2 GB RAM sind für Entwicklung und kleine Apps geeignet, 4 GB sind für eine Produktionswebsite geeignet und 8 GB verarbeiten eine geschäftige Datenbank mit Caching. NVMe-Speicher sind hier wichtiger als zusätzliche Kerne.

Wie überprüfe ich, welche Abfragen langsam sind?

Aktivieren Sie die Erweiterung pg stat statements und sortieren Sie nach mittlerer Zeit. Es zeigt normalerweise ein oder zwei fehlende Indizes, die den größten Teil der Last erklären.

Eine komfortable Produktionsdatenbank beginnt am Buran-2, €13/Monat.

Related