gpt4 book ai didi

sql-server - 多个实例的 Entity Framework 迁移策略

转载 作者:行者123 更新时间:2023-12-01 13:16:19 25 4
gpt4 key购买 nike

我有一个在 AWS Elastic Container Services (ECS) 上运行的 .NET 核心应用程序。
- 该应用程序在两个不同的实例上运行。
- 数据库是 SQL 服务器

该应用程序在启动时运行数据库迁移,效果非常好。但是后来我不得不迁移大量数据,这意味着迁移需要更长的时间。这导致移动的数据重复。

发生这种情况是因为如果迁移已执行,两个应用程序首先检查数据库,两者都发现它没有,然后两者都开始运行迁移,这需要时间。完成后,它将迁移添加到数据库中。

人们如何解决这个问题?

我和其他人想到的可能的解决方案

  • 从应用程序的一个实例开始,然后向上扩展。
    这会起作用,但是每次发生迁移时我都必须手动缩小和放大。 (可以自动完成,但需要时间)
  • 将长时间运行的迁移包装在事务中,并在开始时将迁移设置为在数据库中完成。在提交更改之前检查它是否在数据库中。如果事务失败,请从数据库中删除迁移。
  • 锁定数据库? EF Core lock the database during migration .看起来很奇怪。
  • 使迁移成为部署过程的一部分。这似乎是最佳实践,但这意味着构建服务器需要知道数据库 secret 。我不害怕给它,但这意味着我将不得不维护一个重复的集合。

  • 外面的人做什么?我错过了一些明显的解决方案吗?

    谢谢

    最佳答案

    我们也曾经让我们的应用程序执行迁移,但即使是 Microsoft recommends avoiding this在多实例环境中:

    We recommend production apps should not call Database.Migrate at application startup. Migrate shouldn't be called from an app in server farm. For example, if the app has been cloud deployed with scale-out (multiple instances of the app are running).

    Database migration should be done as part of deployment, and in a controlled way.


    与所有事物一样,解决问题的方法也各不相同。我们的团队很小,因此我们通过 EF CLI 工具生成迁移脚本,然后作为部署/维护例程的一部分手动运行它们。如果您的流程需要,这当然可以自动化。

    关于sql-server - 多个实例的 Entity Framework 迁移策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54670329/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com