【问题标题】:Cloud Run and DB migrations: Initial boot timeout when creating a new revision (to use for db migrations)Cloud Run 和 DB 迁移:创建新修订时的初始启动超时(用于 db 迁移)
【发布时间】:2021-03-02 14:09:19
【问题描述】:

我正在寻找迁移 Cloud Run,但我想知道创建新修订版时的启动时间。基本上,当云运行修订启动时,我想运行数据库迁移,众所周知,这可能需要一段时间。

我知道 Cloud Run 会一直等到容器准备好开始提供流量,但它要等待多长时间才能准备好?

我已经搜索了文档,但没有真正找到任何东西。

数据库托管在 CloudSQL 中

问候, 尼克拉斯

【问题讨论】:

  • 您希望在仅部署一次修订时执行数据库迁移?还是每次启动容器时?
  • @guillaumeblaquiere 第一次部署时只有一次,以免给冷启动带来负担。

标签: google-cloud-platform google-cloud-run


【解决方案1】:

您无法开箱即用地实现您想要的,您需要一些工程设计。事实上,你的容器是不可变的,这意味着运行它 1 次或 1000 次,执行相同的执行。所以,如果你在启动时设置了一个迁移脚本,这个脚本每次都会播放。

您可以想象将当前架构版本存储在您的数据库中。当 Cloud Run 实例从您的容器启动时,启动会检查架构版本,如果不相等,则应用迁移脚本并更新架构版本。

但在每个实例启动时,都会执行与数据库的连接 + 版本检查。


另一种解决方案是定义一个路径来启动迁移脚本/migration。在部署后立即调用它以应用迁移。这一次,没有冷启动影响,但即使在迁移之后仍然可以访问路径。

或者您可以混合使用这两种方法,检查架构版本的数据库 + 应用迁移的路径。

【讨论】:

  • 感谢您的回答 :) 这是一个很好的观点。我将采用第二种方法:在没有流量的情况下发布新版本,然后向 /migration 发送请求,完成后重定向流量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 2011-05-05
  • 1970-01-01
  • 2015-09-25
相关资源
最近更新 更多