软件包安装后脚本是否应该运行数据库迁移?

软件包安装后脚本是否应该运行数据库迁移?

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

现在,我想将应用程序分片到多个服务器(2 个前端和 1 个数据库后端)。我面临的问题是,两个前端服务器在部署新包时都会尝试同时更新架构。这对我来说似乎不对。

此外,它在包和跑步mysql 服务器。这对我来说似乎也不对。

当新包需要自动数据库模式升级时,有哪些好的方法可以实现自动数据库模式升级?

答案1

该包应该自动升级数据库模式,或者应该附带有关如何手动执行此操作的说明,并明确说明这是必需的步骤。

如果采用自动升级方式,则应该检查模式是否已升级;如果它应该安装在共享单个数据库的多台服务器上,它也应该使用某种形式的锁定,或者明确告诉您“请不要同时在所有服务器上升级此包”。

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

相关内容