【发布时间】:2019-02-14 21:18:55
【问题描述】:
我有一个在 AWS 弹性容器服务 (ECS) 上运行的 .NET 核心应用程序。 - 该应用程序在两个不同的实例上运行。 - 数据库是 SQL 服务器
应用程序在启动时运行数据库迁移,效果非常好。但是后来我不得不迁移大量数据,这意味着迁移需要更长的时间。这导致移动的数据重复。
发生这种情况是因为两个应用程序首先检查数据库是否已执行迁移,然后都发现它没有执行,然后都开始运行迁移,这需要时间。完成后,它将迁移添加到数据库中。
人们如何解决这个问题?
我和其他人想到的可能解决方案
仅从一个应用实例开始,然后向上扩展。 这会起作用,但是每次迁移时我都必须手动缩小和放大。 (可以自动完成,但需要时间)
将长时间运行的迁移包装在事务中,并在开始时将迁移设置为在数据库中完成。在提交更改之前检查它是否在数据库中。如果事务失败,请从数据库中删除迁移。
锁定数据库? EF Core lock the database during migration 。看起来很奇怪。
使迁移成为部署过程的一部分。这似乎是最佳实践,但这意味着构建服务器需要知道数据库机密。我不害怕给它,但这意味着我必须维护一个重复的集合。
外面的人是做什么的?我错过了一些明显的解决方案吗?
谢谢
【问题讨论】:
标签: sql-server entity-framework asp.net-core amazon-ecs