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