看到了:Need a better way to manage database schema changes
有什么可以为MySQL做的吗?
现在,如果模式发生了变化,我必须暂时关闭prod,查看差异,手动应用变化,然后运行数据迁移/转换脚本。
很想知道是否有方法/工具可以减轻疼痛。
看到了:Need a better way to manage database schema changes
有什么可以为MySQL做的吗?
现在,如果模式发生了变化,我必须暂时关闭prod,查看差异,手动应用变化,然后运行数据迁移/转换脚本。
很想知道是否有方法/工具可以减轻疼痛。
4条答案
按热度按时间z8dt9xmd1#
为什么不在更新脚本中累积对开发模式的更改,并在下一个版本中运行该脚本呢?
确实有不同的模式比较工具,但是,在我看来,它们应该只用于检查更新脚本是否正确,而不是生成脚本。
在发布时,您应该将生成新模式的脚本和更新脚本作为空脚本提交给版本控制系统。
假设您的模式如下:
承诺1
现在,您的表中有大量数据处于生产状态,其中有大量重复数据,您希望进行一些规范化:
脚本:
承诺2
放行
承诺3
我想看看一个比较工具,将允许您这样做简单得多。
hiz5n14c2#
我认为一个好的方法是像修改代码一样修改数据库,将它们放在源代码控制中,并使部署良好且可重复。
我对这类事情的哲学就像DevOpsWire上的这个模式:https://web.archive.org/web/20111025093215/http://devopswire.com/patterns/database-changes-as-code
工具方面,看看DB-Deploy和Liquibase之类的工具。
lyr7nygr3#
在Need a better way to manage database schema changesCompare two MySQL databases上定义的相同方法将完美地工作。
您也可以查看比较相关的帖子here。
此外,最好是维护您在准备或预部署时可能做出的更改脚本,并在迁移到生产环境时一次性执行它们。
4szc88ey4#
尝试字节库(bytebase.com)
它是基于网络和开源的。
对于你的问题,
方法1:创建dev-prod管道。方法2:执行模式同步。
你甚至可以做GitOps工作流,这意味着你把sql脚本提交到GitHub/GitLab,然后提交会自动触发脚本执行,然后写回LATEST sql来记录快照。