Artigos sobre: Linux e Administração

VPS para MySQL e PostgreSQL

VPS para banco de dados: boas práticas para MySQL e PostgreSQL


Banco de dados é o coração da maioria das aplicações. Configurar mal significa lentidão, perda de dados e problemas difíceis de diagnosticar. Este guia cobre o essencial para rodar MySQL ou PostgreSQL em VPS com segurança e performance.


Requisitos mínimos de infraestrutura


Bancos de dados se beneficiam mais de RAM e disco rápido do que de CPU:


Cenário

RAM recomendada

Disco

CPU

Banco pequeno (< 1 GB)

2-4 GB

SSD NVMe

2 vCPU

Banco médio (1-10 GB)

4-8 GB

SSD NVMe

2-4 vCPU

Banco grande (10-50 GB)

8-16 GB

SSD NVMe

4+ vCPU


Por que RAM importa tanto? Bancos de dados mantêm índices e dados acessados com frequência em memória. Quanto mais RAM, menos leitura de disco — e disco é ordens de magnitude mais lento que RAM.


Segurança do banco de dados


Nunca exponha a porta publicamente


O erro mais grave e mais comum é deixar MySQL (3306) ou PostgreSQL (5432) acessível pela internet. Faça isso:


# Verificar se o banco está ouvindo apenas localmente
sudo ss -tlnp | grep 3306 # MySQL
sudo ss -tlnp | grep 5432 # PostgreSQL


O bind address deve ser 127.0.0.1 ou localhost, não 0.0.0.0.


Para MySQL (/etc/mysql/mysql.conf.d/mysqld.cnf):

bind-address = 127.0.0.1


Para PostgreSQL (/etc/postgresql/16/main/postgresql.conf):

listen_addresses = 'localhost'


Acesso remoto seguro

Se precisar acessar o banco remotamente, use SSH tunnel:


ssh -L 3306:localhost:3306 usuario@SEU_IP


Depois conecte ao banco via localhost:3306 no seu computador.


Tuning básico


MySQL — ajustes essenciais


# /etc/mysql/mysql.conf.d/mysqld.cnf
innodb_buffer_pool_size = 70% da RAM disponível
innodb_log_file_size = 256M
max_connections = 100
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2


PostgreSQL — ajustes essenciais


# /etc/postgresql/16/main/postgresql.conf
shared_buffers = 25% da RAM
effective_cache_size = 75% da RAM
work_mem = 4MB
maintenance_work_mem = 256MB
log_min_duration_statement = 2000


Dica: use o site PGTune para gerar configurações otimizadas com base no hardware do seu VPS.


Estratégia de backup para banco


Dump lógico (portável, mais lento)


# MySQL
mysqldump -u root -p --all-databases --single-transaction > backup.sql

# PostgreSQL
pg_dumpall -U postgres > backup.sql


Backup físico (mais rápido, menos portável)


Para MySQL, use xtrabackup. Para PostgreSQL, use pg_basebackup.


Frequência recomendada


  • Dump lógico diário para restauração granular.
  • Snapshot semanal para disaster recovery rápido.
  • Teste de restore mensal.


Guia completo em Backup automático de VPS.


Monitoramento do banco


Métricas essenciais a acompanhar:


  • Queries por segundo — indica carga.
  • Slow queries — indica queries que precisam de otimização.
  • Conexões ativas — indica pressão de acesso.
  • Buffer hit ratio — indica se o cache de memória está sendo efetivo.
  • Tamanho do banco — indica necessidade de espaço.


Perguntas frequentes (FAQ)


MySQL ou PostgreSQL: qual escolher?

PostgreSQL é mais robusto para consultas complexas, tipos de dados avançados e conformidade SQL. MySQL é mais popular em stacks como WordPress e tem ecossistema amplo. Ambos são excelentes para VPS.


Posso rodar banco de dados em Docker?

Sim, com volumes persistentes. Para produção, certifique-se de que os dados estão em volume Docker (não dentro do container) e que o backup está automatizado.


Quanto de disco o banco precisa?

Como regra geral, reserve 2x o tamanho atual do banco para acomodar crescimento, índices, logs temporários e backup local.


Próximos passos



Actualizado em: 16/03/2026

Esse artigo foi útil?

Partilhe o seu feedback

Cancelar

Obrigado!