Une installation PostgreSQLTM par dĂ©faut est adaptĂ©e Ă un poste de travail des annĂ©es 1990. Sur une VPS de 2 Ă 8 Go, quelques rĂ©glages changent tout â voici la version courte, avec des nombres rĂ©els.
apt update && apt install -y postgresql postgresql-contrib
systemctl enable --now postgresql
sudo -u postgres psql -c "SELECT version();"
Ubuntu navires PostgreSQL 16 sur 24.04. Cette version est assez moderne pour tout ce que vous pourriez exécuter.
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;"
N'utilisez jamais le superutilisateur postgres dans une application. Un utilisateur par application, une base de données par projet.
Modifier /etc/postgresql/16/main/postgresql.conf et définir les valeurs en fonction de la taille du serveur :
| Réglage | 2 Go VPS | 4 Go VPS | 8 Go VPS |
|---|---|---|---|
| buffers partagés | 512Mo | 1 Go | 2 Go |
| cache effective | 1 Go | 2,5 Go | 5 Go |
| message de travail | 16Mo | 32 Mo | 48 Mo |
| d'entretien | 128 Mo | 256 Mo | 512Mo |
| max connections | 50 | 100 | 150 |
systemctl restart postgresql
sudo -u postgres psql -c "SHOW shared_buffers;"
Si votre application ouvre des centaines de connexions, placez PgBoncer devant au lieu de lever max connections â chaque connexion coĂ»te de la mĂ©moire.
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
Ajouter Ă cron avec crontab -e:
30 3 * * * /usr/local/bin/pg-dump-all
Les dĂ©charges sont des instantanĂ©s cohĂ©rents; les copies de fichiers d'un rĂ©pertoire de donnĂ©es en direct ne le sont pas. Puis expĂ©diez les dĂ©charges hors site â notre Guide rĂ©siste couvre cette partie.
sudo -u postgres createdb appdb_restore
sudo -u postgres pg_restore -d appdb_restore /var/backups/postgres/appdb.dump
Mieux vaut pas. Gardez-le sur localhost et laissez l'application lui parler directement, ou utilisez un tunnel SSH. Si vous devez l'exposer, n'autoriser que votre IP dans le pare-feu et demander TLS.
2 GB RAM est parfait pour le développement et les petites applications, 4 GB est confortable pour un site de production, et 8 GB gÚre une base de données occupée avec cache. Le stockage NVMe compte plus que des noyaux supplémentaires ici.
Activer l'extension pg stat statements et trier par temps moyen. Il montre habituellement un ou deux index manquants qui expliquent la plupart de la charge.
Une base de données de production confortable commence à Buran-2, 13/mois.