Alteración de la base de datos
Al desarrollar nuevas funcionalidades o al refactorizar las existentes, a veces es inevitable cambiar los esquemas de la base de datos.
Las cosas pueden sonar aterradoras, como usuario, usualmente necesitas:
- Verificar dos veces la diferencia entre dos o más versiones
- Alterar la base de datos de una manera segura y compatible hacia atrás
- Prepararte para posibles fallos, por ejemplo, tener un script de reversión
- Reemplazar gradualmente las instancias de Logto en ejecución a la nueva versión
Oye, nosotros también somos desarrolladores, y sabemos que no es agradable hacer todas estas cosas arriesgadas pero obligatorias. Entonces, ¿por qué no se las damos a alguien que no cometerá errores, como un CLI?
A partir de ahora, tu proceso de actualización será:
- Ejecutar
logto db alt deploy
desde cualquier lugar que pueda acceder a la base de datos - Reemplazar gradualmente las instancias de Logto en ejecución a la nueva versión
¡Comencemos!
Determinar la versión a implementar
Si tienes Logto CLI instalado globalmente, es altamente recomendable actualizar el CLI a la última versión antes de implementar para obtener todas las alteraciones de base de datos disponibles. Luego ejecuta el comando:
- CLI
- npx
logto db alteration deploy
npx @logto/cli db alteration deploy
Si tu base de datos está actualizada, verás el siguiente mensaje:
[info] Found 0 alteration to deploy
Si tienes alteraciones no implementadas, el CLI te pedirá que elijas la versión deseada:
? Choose the alteration target version (Use arrow keys)
> 1.2.0
1.0.0
Teóricamente, la versión a implementar debería coincidir con la versión de tu instancia de Logto. Mientras tanto, puedes usar el comando con una versión objetivo:
- CLI
- npx
logto db alteration deploy 1.2.0
npx @logto/cli db alteration deploy 1.2.0
Es útil cuando deseas hacer la alteración en un pipeline no-TTY, solo recuerda pasar la URL de la base de datos usando --db-url
. Consulta Despliegue y configuración para configurar un trabajo de alteración en tu clúster.
Para cada script de alteración, Logto CLI ejecutará todo el script en una transacción. Así que si una implementación falla, puedes continuar fácilmente con el mismo comando después de solucionar el problema.
Revertir alteraciones
Nuestros scripts de alteración también vienen con un script down
que puede revertir los cambios. Para revertir el estado de la base de datos a una versión específica, reemplaza 1.0.0
con tu versión objetivo y ejecuta el siguiente comando:
- CLI
- npx
logto db alteration rollback 1.0.0
npx @logto/cli db alteration rollback 1.0.0
Puedes encontrar todos los scripts de alteración en este directorio.
Para colaboradores
La rama principal del repositorio de Logto puede contener scripts de alteración no publicados. Puede que necesites implementar manualmente las alteraciones "next" ejecutando:
- CLI
- npx
logto db alteration deploy next
npx @logto/cli db alteration deploy next
Si estás desarrollando una funcionalidad que requiere alteraciones en la base de datos, en lugar de actualizar el esquema de la base de datos, también necesitas proporcionar un script en el siguiente formato:
next-[timestamp]-what-to-do.ts
Consulta este directorio como referencia.