基础设施与扩容结果计算很快,队列却很慢——NovaCommerce 第四篇
0.34 秒的结果任务排在慢速 AI 工作之后。分通道有帮助,但持久答案、有界重试与工作节点恢复同样重要。
26 分钟切换看似结束,旧管理面板却仍在旧库写入。真正的功课是控制写入者、核对冲突,并保护恢复后的新工作。
作者
Anichur Rahaman

第 3 部分,共 5 部分
从单服务器到考试日就绪2026 年 10 月 5 日 22:59,数据库维护窗口结束,网站在 26 分钟后恢复。23:24,团队发现一个旧管理面板仍在写旧库。应用搬走了,所有写入者却没有一起搬走。
NovaCommerce 是课程与考试平台的匿名名称。第三篇保留既有 9–10 月项目记录,同时修正通用技术说明。历史计数不是本次新做的生产审计,也不是 StoreConsole 基准。
原 managed MySQL 是单个 8 vCPU/32 GB 节点,没有备用。历史新配置为 MySQL 8.4 Standard,每节点 4 vCPU/16 GB,主节点加备用节点,数据约 11 GB。这针对单节点故障提供路径,并不证明零数据丢失、无延迟切换或区域级恢复。
双节点约 $389/月是历史预算,不是现行报价。DigitalOcean 当前文档列出 Standard Edition 限制:2026 年 10 月 15 日起适用于新纳入账户,11 月 30 日起适用于所有账户。复制方案前须核对账户、套餐和备用节点资格。备用也会复制误删除,因此不是备份。
记录描述了 22:33 维护路由、排空队列、停止调度、观察 30 秒无写入、约十分钟复制、验证及制作新应用镜像,再于 22:59 恢复。短暂无写入不是隔离措施,遗漏客户端可以稍后继续写。应列出 Web、工作进程、调度、回调、导入和外部面板,并在一致性复制前阻止全部旧写入。
案例报告表数、行数匹配,之后又检查表内容,并详细比较一个大结果表。必须保存比较对象、快照边界和方法。行数相同不代表内容相同,切换后比较还需要明确核对边界。也要检查权限、结构、使用的例程/事件、字符集及真实答案保存读取。标准 mysqldump 不是并行导出引擎;未记录的多流封装不能直接作为可复现的一致性操作方案。
| 历史观察 | 记录值 | 不能证明什么 |
|---|---|---|
| 复制总数 | 341 表;18,727,244 行 | 行数相同 ≠ 业务状态相同 |
| 最大结果表比较 | 约 2.76 百万行 | 应保留范围和方法 |
| 恢复后前四分钟 | 约 2,900 请求;0 个 5xx | 不覆盖所有后续流程或写入者 |
| 旧库迟来写入 | 48 =44 合并 +4 保留 | 不是通用合并规则 |
| 仅 Web 连接估算 | 10 ×80 =800 | 未计双连接、工作节点和重叠 |
旧面板在源库增加 48 行。历史修复合并其中 44 行,保留目标库四个更新版本,再迁移面板并更改旧凭据。44+4=48 是该事件的核对结果,不是通用“时间戳最新者获胜”规则。时钟、删除、关联行和并发编辑必须按业务语义处理,并保留审计记录。
停止遗漏写入者,同时终止或隔离已有连接。仅改密码不一定关闭已经认证的会话,要验证旧库写入被拒绝。旧集群据记载冻结保留 48 小时;新库开始接收写入后,它是恢复材料,不是最新回滚目标。未核对新答案就切回可能丢失已接受工作。保留期应依据恢复验证与义务,不是统一 48 小时。

案例把备用与主节点用于读,写入和工作节点读取只走主节点。供应商支持的备用读取端点可利用已付容量,却也共享恢复资源。需要验证支持范围、复制延迟和故障行为;专用读副本并非总是浪费。
Laravel sticky=true 只在同一请求发生写入后,把之后的读取送往写连接,不能单独保证下一个请求或整个会话读到新数据。跨请求新鲜度要有经过测试的机制,或对权威答案读取主库。多个读主机并不能保证统一两秒故障切换,也不代表任意查询可安全重放。应区分连接失败与查询已经执行的情况。
原 10 节点 ×80 个 PHP-FPM 子进程=800,只按每进程一个连接计算。读写各一个可能达到 1,600,尚未计工作进程、管理连接和滚动部署重叠,而历史上限为 1,601。预算必须覆盖所有连接来源和新旧节点。连接上限不是吞吐保证。
AI 嵌入存于独立 PostgreSQL 17/pgvector 实例,历史规格为 2 vCPU/4 GB。1 vCPU/2 GB 的缩小试验因负载需要被撤回。独立实例提供各自 CPU/内存预算,但共享应用池、网络或供应商仍可能耦合故障。这是负载选择,不代表所有 MySQL 产品都没有向量能力。
10 月 7 日考试记录为 MySQL CPU 最大 24.5%、平均 13.4%,最多五个运行查询,未观察到锁等待。这仅支持该窗口这些信号未饱和,不能证明 450 requests/s 的上限或六倍容量;查询组合、写争用、I/O 和故障切换都会改变结果。
应用最小权限凭据与迁移权限分开,限制数据库访问,执行有业务检查及实测恢复目标的备份还原。配置了备用、成功复制、成功恢复是三份不同证据。第四篇将继续队列与工作节点的故事。
审核日期:2026年11月6日。Anichur Rahaman,StoreConsole 创建者。案例数字和价格均为历史记录;当前一手资料支持技术限定说明。
作者简介
Anichur Rahaman
继续阅读