【发布时间】:2023-04-09 08:28:01
【问题描述】:
我们需要定期修改生产数据库的结构。在许多情况下,这些更改对应于引用新更改的代码库中的更改。
我们通常会在拉取新更改并运行新 SQL 查询时放置一分钟的失败鲸鱼页面,但我有兴趣编写一个组件或其他东西来即时运行 SQL 查询,所以不需要停机。
我还没有尝试过,但这是我的计划:
- 编写一个组件或其他东西来运行一个或多个特定查询。查询可能会有
IF EXISTS之类的检查,因此它们只运行一次。我认为它也必须清除模型/持久缓存。 - 从 AppController 的
beforeFilter内部调用上述组件/查询。 - 将更改拉入现场(使用上述代码)。
- 等待几秒钟,让应用运行一次(由其他用户或我们)。
- 删除触发 SQL 查询运行的 beforeFilter 代码。
这是一个疯狂的想法吗?这是我的问题: A. 这样的事情会奏效吗? B.有没有更好的方法来做到这一点,我错过了? C. 关于模型缓存,我需要了解哪些信息才能避免引发错误。据推测,调试级别将设置为 0(因为该站点将处于生产状态)。
顺便提一下,我们不是在负载平衡系统上。我们在一个专用服务器上。
【问题讨论】:
标签: php mysql cakephp deployment database-migration