我们刚刚发布了对分支工作流程的更新:安全迁移(Safe Migrations)。
安全迁移为你的生产分支是否启用直接 DDL 提供了选择。在此更新发布之前,为了实现无阻塞架构变更,所有 PlanetScale 的生产分支均禁止直接执行 DDL。

注意

直接 DDL 指的是直接在生产数据库上执行 DDL(数据定义语言)的 SQL 语句,这可能会导致表锁定和停机。


对现有数据库的影响

如果你已经有了生产分支,安全迁移功能已自动启用。你的数据库没有经历任何变化,也不需要额外操作。从现在开始,每当你想在新的生产分支上启用无阻塞的架构变更时,你需要在将分支提升为生产分支时点击“启用安全迁移”(Enable safe migrations)的切换按钮。
PlanetScale 仪表板 UI 显示启用安全迁移的选项。

注意

如果禁用安全迁移,你将无法使用部署请求(deploy requests)、架构回滚(schema reverts)、和受限部署(gated deploys),并且不会在部署请求工作流程中收到数据丢失警告。有关更多信息,请参考我们的安全迁移文档。


为什么我们引入了安全迁移?

PlanetScale 于 2021 年 11 月 16 日正式版上线(GA)。自那以后,我们不断创新,推出新功能以使数据库管理更便捷。作为一家以客户为中心的公司,我们非常乐意倾听用户如何使用我们的产品,也欢迎他们的反馈来帮助我们进一步提升。
为了确保我们继续成为运行 MySQL 的最佳选择,倾听并响应用户反馈至关重要。这也是我们不断推出改进和调整(如安全迁移)的原因——以确保 PlanetScale 在应用开发的各个阶段都对用户友好。
我们收到的一些反馈表明,少数用户正在使用变通方法来对他们的生产数据库运行直接 DDL。在某些情况下,用户甚至将开发分支用于生产工作负载,而这是我们明确不推荐的。稳定性和可用性是 PlanetScale 最重要的产品特性。这些情况促使我们开发了安全迁移。我们希望确保客户能够使用生产分支以高可用的配置运行我们的数据库,同时仍然能够使用他们现有的工具和流程。
虽然我们仍然强烈建议为生产数据库启用安全迁移,但我们最终希望提供更大的灵活性,使你能够选择和使用符合自己工作流程的操作,同时提供工具来实现更安全的架构变更,以供你决定时使用。


安全迁移对用户有利的场景

早期开发阶段和/或低流量应用

如果你的应用正处于“快速试错”(move fast and break things)阶段,那么很可能仍在试验数据库的架构。这个阶段你在优先优化变更速度而非安全性。这种情况下,禁用安全迁移让你可以直接在生产环境中快速迭代架构是合理的。

Laravel、Rails 和其他内置迁移功能的框架

此更新也能让有既定偏好架构迁移工作流程的开发者继续使用自己的工具。例如,对于像 Rails 和 Laravel 这样的框架,开发者通常在部署过程中直接对生产数据库运行架构迁移。这种工作流程既快又方便,但随着数据量增长,可能会带来停机的风险。
当你的应用需要更先进的架构迁移工具时,你可以选择启用安全迁移并将其集成到你的部署流程中。
查看我们内部使用的 Rails 工作流程以安全迁移我们的数据库。

WordPress

另一个用户可能会有更好支持的场景是使用 PlanetScale 配合某些 CMS 平台比如 WordPress。
在许多 WordPress 设置中,你可能习惯于在 WordPress 仪表板中点击按钮添加或更新插件,而这可能需要对生产数据库运行 DDL。没有为这个工作流程提供选项成为一些 WordPress 开发者的门槛,现如今当你需要更新插件时可以关闭安全迁移来实现。


结语

我们希望能够在用户旅程的各个阶段解锁并支持他们的需求。PlanetScale 的设计能够适应你从应用或业务的初期启动到服务数百万用户的每个阶段。我们的定价计划体现了这一点,而现在我们的工作流程选项也能做到。



工作流程的更新:安全迁移插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://folen.top/2025/09/13/workflow-safe-migations/