Aprovisionamiento de bases de datos
sh0 ejecuta PostgreSQL, MySQL, MariaDB, MongoDB y Redis en contenedores gestionados, llamados servidores de bases de datos: un motor por contenedor, un volumen persistente, credenciales generadas y un nombre de host interno estable.
Bases de datos compatibles
Hay cinco motores disponibles. El panel ofrece las versiones siguientes y preselecciona la versión por defecto; sh0 descarga la imagen oficial de la versión elegida.
| Motor | Versiones ofrecidas | Por defecto | Imagen Docker | Puerto |
|---|---|---|---|---|
| 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) pasan la versión a Docker como etiqueta de imagen, sin compararla con esta lista. Una versión fuera de la lista no está probada por sh0; si la etiqueta no existe, la creación falla al descargar la imagen.Crear una base de datos
Un servidor de bases de datos se crea desde el panel, la CLI o la API. Solo los roles owner y admin pueden crearlo.
- En la barra lateral, abra Servicios y luego Servidores de bases de datos.
- Haga clic en Crear servidor y elija el motor.
- Escriba el Nombre del servidor: de 3 a 63 caracteres, letras minúsculas, dígitos y guiones, sin guion al principio ni al final.
- Elija la Versión y confirme con Crear servidor.
sh0 descarga la imagen si hace falta, inicia el contenedor y espera hasta 60 segundos a que el motor acepte conexiones antes de abrir la página del servidor. También genera:
- Credenciales de administrador: usuario
postgres(PostgreSQL),root(MySQL, MariaDB),admin(MongoDB) odefault(Redis), con una contraseña aleatoria de 32 caracteres, almacenada cifrada con la clave maestra de la instancia. - Un nombre de host interno,
<nombre>.internal, en la redsh0-neta la que se une cada aplicación. - Un volumen de datos llamado
sh0-dbsrv-<nombre>-data, montado en el directorio de datos del motor. El contenedor se llamash0-dbsrv-<nombre>.
Lo mismo desde la CLI (sh0 db es un alias de sh0 database-servers). Los valores de motor son postgres, mysql, mariadb, mongodb y 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 en el puerto del motor (aquí 5432). El Port que muestra sh0 db info es un puerto del host enlazado solo a 127.0.0.1: no es accesible desde otra máquina. Consulte Cadenas de conexión.Un servidor arranca vacío. Añada bases y usuarios en sus pestañas Bases de datos y Usuarios, o con sh0 db create-database, sh0 db create-user y sh0 db grant. Redis no tiene pestaña de bases.
Límites de recursos
Cada servidor de bases de datos funciona desde su creación con un límite de CPU y de memoria. No hay cuota de disco: el volumen crece con los datos, hasta el espacio libre del host.
| Ajuste | Por defecto | Valores admitidos |
|---|---|---|
| CPU | 0,5 núcleos, todos los motores | De 0,1 núcleos hasta el número de núcleos del host |
| Memoria | 1 GB; 256 MB para Redis | De 64 a 16 384 MB |
| Disco | Sin cuota | No configurable |
Los límites que Docker aplica realmente, leídos en un servidor PostgreSQL recién creado (bytes y luego nano-CPU):
$ docker inspect sh0-dbsrv-my-db --format '{{.HostConfig.Memory}} {{.HostConfig.NanoCpus}}'
1073741824 500000000Para cambiarlos, abra la pestaña Escalado del servidor, indique Límite de memoria (MB) y Límite de CPU (núcleos) y guarde. Los valores guardados no se aplican al contenedor en ejecución: haga clic en Apply & Restart (etiqueta mostrada en inglés) para recrearlo con los nuevos límites. El volumen de datos se conserva; las conexiones se cortan durante el reinicio.
Estado y salud de la base de datos
Un servidor de bases de datos está running (en marcha) o stopped (detenido). Su pestaña Resumen muestra en directo el uso de CPU, memoria y red, el host interno y los datos de conexión.
Administrar bases de datos
- Iniciar / detener: desde la página del servidor, o con
sh0 db startysh0 db stop. El contenedor se reinicia solo tras un reinicio del host (política de Dockerunless-stopped). - Recrear:
sh0 db recreatereconstruye el contenedor a partir de los ajustes guardados (versión, límites, montajes) y conserva el volumen de datos. - Cambiar de versión:
sh0 db update <id> --version <v>guarda la nueva versión; se aplica en la siguiente recreación. El panel no lo ofrece. Los motores no admiten volver a una versión anterior y algunas actualizaciones mayores exigen un volcado y una restauración: haga antes una copia de seguridad. - Copias de seguridad: consulte Copias de seguridad y restauración.
Para eliminar un servidor y sus datos, abra su pestaña Configuración, marque Eliminar volúmenes en la Zona de peligro y elimine. El equivalente en la API es DELETE /api/v1/database-servers/:id?delete_volumes=true.
sh0 db delete, quita el contenedor pero conserva el volumen de datos sh0-dbsrv-<nombre>-data en el disco, aunque el mensaje de confirmación de la lista diga que se eliminan los datos. Eliminar el volumen es irreversible: haga antes una copia de seguridad.