如何交换 Azure Web App 部署槽中的数据库?

How to swap the database in Azure Web App deployment slots?

我知道每个插槽都有自己的配置,但是数据库迁移呢?他们如何申请?假设我通过迁移部署到登台,因此登台数据库得到更新。生产数据库如何更新?我如何访问代码中的变量?

当您更新暂存槽时,连接到该槽的数据库将得到更新。

让我描述两个场景 -

  1. 生产槽和暂存槽使用相同的数据库: 在这种情况下,如果您更新代码并对暂存槽执行升级,生产数据库将接收所有数据库迁移,因为它也绑定到暂存槽。这可能不是一个理想的方法。

  2. 生产槽和暂存槽使用单独的数据库: 在这里,如果您 运行 在暂存槽上进行更新,数据库迁移将在连接到该槽的数据库上执行,生产数据库将保持不变。

现在,第一种情况不是一个好主意,因为您要直接对生产数据库进行更改。但是你得到了一个完全更新的数据库。在第二种情况下,它是安全的,但您的最新数据可能不一致。

最好的办法是按照第二种情况进行测试。当测试完成时 -

  1. 为数据库迁移生成脚本,
  2. 备份生产数据库
  3. 运行 数据库手动迁移
  4. 将生产槽与暂存槽交换

问题是自动部署需要大约 3 分钟,但数据库迁移在大约 30 秒内完成