Provisionamento de Banco de Dados
O sh0 executa PostgreSQL, MySQL, MariaDB, MongoDB e Redis em contêineres gerenciados, chamados servidores de banco de dados: um motor por contêiner, um volume persistente, credenciais geradas e um nome de host interno estável.
Bancos de Dados Suportados
Cinco motores estão disponíveis. O painel oferece as versões abaixo e pré-seleciona a padrão; o sh0 baixa a imagem oficial da versão escolhida.
| Motor | Versões oferecidas | Padrão | Imagem Docker | Porta |
|---|---|---|---|---|
| PostgreSQL | 17, 16, 15, 14 | 16 | postgres:<version>-alpine | 5432 |
| MySQL | 8.4, 8.0 | 8.4 | mysql:<version> | 3306 |
| MariaDB | 11.4, 11.2, 10.11 | 11.4 | mariadb:<version> | 3306 |
| MongoDB | 8.0, 7.0, 6.0 | 7.0 | mongo:<version> | 27017 |
| Redis | 7.4, 7.2 | 7.4 | redis:<version>-alpine | 6379 |
--version) repassam a versão ao Docker como tag de imagem, sem compará-la com esta lista. Uma versão fora da lista não é testada pelo sh0; se a tag não existir, a criação falha ao baixar a imagem.Criando um Banco de Dados
Um servidor de banco de dados é criado pelo painel, pela CLI ou pela API. Somente os papéis owner e admin podem criá-lo.
- Na barra lateral, abra Serviços e depois Servidores de bancos de dados.
- Clique em Criar servidor e escolha o motor.
- Informe o Nome do servidor: de 3 a 63 caracteres, letras minúsculas, dígitos e hífens, sem hífen no início nem no fim.
- Escolha a Versão e confirme com Criar servidor.
O sh0 baixa a imagem se necessário, inicia o contêiner e espera até 60 segundos para que o motor aceite conexões antes de abrir a página do servidor. Ele também gera:
- Credenciais de administrador: usuário
postgres(PostgreSQL),root(MySQL, MariaDB),admin(MongoDB) oudefault(Redis), com uma senha aleatória de 32 caracteres, armazenada criptografada com a chave mestra da instância. - Um nome de host interno,
<nome>.internal, na redesh0-netà qual toda aplicação se conecta. - Um volume de dados chamado
sh0-dbsrv-<nome>-data, montado no diretório de dados do motor. O contêiner se chamash0-dbsrv-<nome>.
O mesmo pela CLI (sh0 db é um alias de sh0 database-servers). Os valores de motor são postgres, mysql, mariadb, mongodb e redis:
$ sh0 db create --name my-db --engine postgres
Database server 'my-db' created (id: 3afde175-12d6-4614-94ca-e504737a7cc4, engine: postgres 16)
$ sh0 db info 3afde175-12d6-4614-94ca-e504737a7cc4
Database Server: my-db
ID: 3afde175-12d6-4614-94ca-e504737a7cc4
Engine: postgres 16
Status: running
Host: my-db.internal
Port: 32965
Databases: 0
Users: 0
$ sh0 db create-database 3afde175-12d6-4614-94ca-e504737a7cc4 --name appdb
Database 'appdb' created (id: 90083652-6e9c-44fe-afb8-a173284847ad).my-db.internal na porta do motor (aqui 5432). A Port exibida por sh0 db info é uma porta do host vinculada apenas a 127.0.0.1: não é acessível de outra máquina. Veja Strings de conexão.Um servidor começa vazio. Adicione bancos e usuários nas abas Bancos de dados e Usuários, ou com sh0 db create-database, sh0 db create-user e sh0 db grant. O Redis não tem aba de bancos.
Limites de Recursos
Todo servidor de banco de dados roda desde a criação com um limite de CPU e de memória. Não há cota de disco: o volume cresce com os dados, até o espaço livre do host.
| Configuração | Padrão | Valores permitidos |
|---|---|---|
| CPU | 0,5 núcleo, todos os motores | De 0,1 núcleo até o número de núcleos do host |
| Memória | 1 GB; 256 MB para o Redis | De 64 a 16.384 MB |
| Disco | Sem cota | Não configurável |
Os limites que o Docker realmente aplica, lidos em um servidor PostgreSQL recém-criado (bytes e depois nano-CPUs):
$ docker inspect sh0-dbsrv-my-db --format '{{.HostConfig.Memory}} {{.HostConfig.NanoCpus}}'
1073741824 500000000Para alterá-los, abra a aba Escalonamento do servidor, defina Limite de memória (MB) e Limite de CPU (núcleos) e salve. Os valores salvos não são aplicados ao contêiner em execução: clique em Apply & Restart (rótulo exibido em inglês) para recriá-lo com os novos limites. O volume de dados é mantido; as conexões caem durante a reinicialização.
Status e Saúde do Banco de Dados
Um servidor de banco de dados está running (em execução) ou stopped (parado). Sua aba Visão geral mostra ao vivo o uso de CPU, memória e rede, o host interno e os dados de conexão.
Gerenciando Bancos de Dados
- Iniciar / parar: pela página do servidor, ou com
sh0 db startesh0 db stop. O contêiner reinicia sozinho após uma reinicialização do host (política do Dockerunless-stopped). - Recriar:
sh0 db recreatereconstrói o contêiner a partir das configurações salvas (versão, limites, montagens) e mantém o volume de dados. - Mudar de versão:
sh0 db update <id> --version <v>registra a nova versão; ela vale a partir da próxima recriação. O painel não oferece isso. Os motores não suportam voltar a uma versão anterior e algumas atualizações maiores exigem um dump e uma restauração: faça antes um backup. - Backups: veja Backups e restauração.
Para excluir um servidor e seus dados, abra a aba Configurações, marque Excluir volumes na Zona de perigo e exclua. O equivalente na API é DELETE /api/v1/database-servers/:id?delete_volumes=true.
sh0 db delete, remove o contêiner mas mantém o volume de dados sh0-dbsrv-<nome>-data no disco, embora a mensagem de confirmação da lista diga que os dados são excluídos. Excluir o volume é irreversível: faça um backup antes.