如何交换 Azure Web App 部署槽中的数据库?
How to swap the database in Azure Web App deployment slots?
我知道每个插槽都有自己的配置,但是数据库迁移呢?他们如何申请?假设我通过迁移部署到登台,因此登台数据库得到更新。生产数据库如何更新?我如何访问代码中的变量?
当您更新暂存槽时,连接到该槽的数据库将得到更新。
让我描述两个场景 -
生产槽和暂存槽使用相同的数据库:
在这种情况下,如果您更新代码并对暂存槽执行升级,生产数据库将接收所有数据库迁移,因为它也绑定到暂存槽。这可能不是一个理想的方法。
生产槽和暂存槽使用单独的数据库:
在这里,如果您 运行 在暂存槽上进行更新,数据库迁移将在连接到该槽的数据库上执行,生产数据库将保持不变。
现在,第一种情况不是一个好主意,因为您要直接对生产数据库进行更改。但是你得到了一个完全更新的数据库。在第二种情况下,它是安全的,但您的最新数据可能不一致。
最好的办法是按照第二种情况进行测试。当测试完成时 -
- 为数据库迁移生成脚本,
- 备份生产数据库
- 运行 数据库手动迁移
- 将生产槽与暂存槽交换
问题是自动部署需要大约 3 分钟,但数据库迁移在大约 30 秒内完成
我知道每个插槽都有自己的配置,但是数据库迁移呢?他们如何申请?假设我通过迁移部署到登台,因此登台数据库得到更新。生产数据库如何更新?我如何访问代码中的变量?
当您更新暂存槽时,连接到该槽的数据库将得到更新。
让我描述两个场景 -
生产槽和暂存槽使用相同的数据库: 在这种情况下,如果您更新代码并对暂存槽执行升级,生产数据库将接收所有数据库迁移,因为它也绑定到暂存槽。这可能不是一个理想的方法。
生产槽和暂存槽使用单独的数据库: 在这里,如果您 运行 在暂存槽上进行更新,数据库迁移将在连接到该槽的数据库上执行,生产数据库将保持不变。
现在,第一种情况不是一个好主意,因为您要直接对生产数据库进行更改。但是你得到了一个完全更新的数据库。在第二种情况下,它是安全的,但您的最新数据可能不一致。
最好的办法是按照第二种情况进行测试。当测试完成时 -
- 为数据库迁移生成脚本,
- 备份生产数据库
- 运行 数据库手动迁移
- 将生产槽与暂存槽交换
问题是自动部署需要大约 3 分钟,但数据库迁移在大约 30 秒内完成