|
Post by account_disabled on Apr 4, 2024 6:54:45 GMT
我们手动删除了旧索引要恢复它们您需要手动运行命令并等待个小时这显然不是一个选择。你无法回滚你无法修复它逗号放置正确幸运的是我的团队负责人萨莎及时介入了事件。他迅速清醒地评估有新的索引但不起作用。怎示了事件的边界。中的图表清楚地显示了事件的边界。旧索引不再存在。有新的部分索引但服务器上的代码是旧的旧代码不使用新索引进行搜索查询查询执行时间很长。数据库连接和请求队列被堵塞服务在负载下崩溃。 最初我没有考虑到一个关键细节部分索引仅在代码中的查询包含类似于部分索引谓词的谓词时才起作用这里的 阿曼数据 谓词是之后的谓词。简单地说这个查询不使用部分索引正确的查询是使用部分索引很明显部署端点上一切正常。但在第三点和第四点之间的窗口期我们遭遇了一场灾难。不幸的是部署直到点分才完成。工作人员中有一个构建队列我的部署正在等待工作人员空闲。另外金丝雀部署也导致了延迟。在这种情况下可以在关闭金丝雀的情况下进行滚动。当部署完成后需要重新启动之后情况开始恢复正常。 事件于下午点分结束。排除销售额下降的计划向表添加一列默认为部署迁移。手动创建新的唯一部分索引。我们把时间定在小时。在代码中启用软删除安装扩展在配置中启用软删除通过迁移修复新的数据库结构。删除旧的唯一索引。这一发布选项将防止销量下降但有一个有趣的点。事情是在发布完成第点之前旧的唯一索引仍保留在数据库中。因此在第三点和第四点之间的窗口中如果有人使用软删除进行删除然后尝试添加具有相同数据的新记录我们可能会遇到错误。旧的唯一索引在被删除之前不允许执行此操作。
|
|