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
- Proteja o backup com Backup automático 3-2-1
- Otimize a performance geral em Otimizar VPS Linux
- Dimensione o plano em Como escolher VPS
Actualizado em: 16/03/2026
Obrigado!
