使用 Spring Boot 并通过 Liquibase 管理数据库更改,所有更改都在应用程序启动时执行。这对于快速运行的更改来说完全没问题。
一些变化,例如添加DB索引,可以运行一段时间。如果在 K8s 上运行应用程序,活动/就绪检查会触发应用程序重新启动。在这种情况下,Liquibase 会导致无限循环。
有没有一种模式可以使用 Liquibase 管理长时间运行的脚本?有什么例子吗? 一种方法可能是将更改分为两组:
在应用程序启动后推迟长时间运行的脚本。通过私有 REST API 或类似 API 公开数据库升级调用。
您的代码和开发实践必须支持 n-1 版本的数据库模式。例如:将需要新列的功能隐藏在功能标志后面,直到架构升级完全推出。