Principal / Guias / PostgreSQL

PostgreSQL numa VPS: instalar, ajustar, fazer backup

Uma instalação PostgreSQL padrão é sintonizada para uma estação de trabalho dos anos 1990. Em uma VPS de 2-8 GB algumas configurações mudam tudo — aqui está a versão curta, com números reais.

1. Instalar

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

Ubuntu navios PostgreSQL 16 em 24.04. Essa versão é moderna o suficiente para qualquer coisa que você possa executar.

2. Criar um banco de dados e um usuário

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 o superusuário postgres em uma aplicação. Um usuário por aplicativo, um banco de dados por projeto.

3. Sintonize para sua RAM

Editar /etc/postgresql/16/main/postgresql.conf e definir valores com base no tamanho do servidor:

Configuração2 GB VPS4 GB VPS8 GB VPS
buffers compartilhados512MB1GB2GB
tamanho cache eficaz1GB2.5GB5GB
work mem16MB32MB48MB
maintenance work mem128MB256MB512MB
max conexões50100150
systemctl restart postgresql
sudo -u postgres psql -c "SHOW shared_buffers;"

Se o seu aplicativo abrir centenas de conexões, coloque o PgBouncer na frente em vez de levantar conexões max — cada conexão custa memória.

4. Despejos diários com rotação

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

Adicionar ao cron com crontab -e:

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

Os resultados são instantâneos consistentes; as cópias de arquivos de um diretório de dados ao vivo não são. Em seguida, enviar os lixões fora do local — o nosso guia resítico cobre essa parte.

5. Restaurar um despejo

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

Respostas rápidas

Posso abrir PostgreSQL para a internet?

É melhor não. Mantenha-o no localhost e deixe o aplicativo falar com ele diretamente, ou use um túnel SSH. Se você precisa expô-lo, permita apenas seu IP no firewall e exija TLS.

Que plano preciso para o PostgreSQL?

2 GB de RAM é bom para o desenvolvimento e aplicativos pequenos, 4 GB é confortável para um site de produção, e 8 GB lida com um banco de dados ocupado com cache. O armazenamento NVMe importa mais do que núcleos extras aqui.

Como posso verificar quais consultas são lentas?

Activar a extensão pg stat statements e ordenar por tempo médio. Geralmente mostra um ou dois índices em falta que explicam a maior parte da carga.

Uma base de dados de produção confortável começa em Buran-2, €13/mês.

Relacionado