包装后安装脚本运行数据库迁移?

所以我有这个debian软件,它安装了一些使用mysql数据库的nodejs应用程序web应用程序。 该软件包有一个postinst脚本,用于运行捆绑在软件包中的db migrate命令。

现在,我想把应用程序分成多个服务器(2个前端和1个数据库后端)。 我面临的问题是,两个前端服务器将试图在部署新软件包的同时更新模式。 这似乎不正确的我。

另外,它在包和运行的 mysql服务器之间创build一个依赖关系。 这对我来说也不合适。

当一个新软件包需要升级时,实现自动数据库模式升级的好方法是什么?

软件包应该自动升级数据库模式,或者应该提供关于如何手动执行的说明,并明确指出这是必需的步骤。

如果是自动升级方式,则应检查模式是否已经升级; 如果它应该安装在共享一个数据库的多个服务器上,那么它也应该使用某种forms的locking,或者明确告诉你“请不要同时在所有服务器上升级这个包”。

TL; DR:你的软件包似乎受懒惰的编程和懒惰的文档的影响。