我们是如何在零停机的情况下处理数据库迁移的

这项迁移在纸面上看起来很简单:添加几列,回填旧记录,然后将应用程序切换为读取新格式。风险在于该表全天都很繁忙,而且旧的 worker 代码在部署期间仍在运行。 我们将它拆分为三个版本发布。第一个版本添加了可为空的列,并同时写入旧字段和新字段。第二个版本在低流量时段分批进行回填,并使用了一个可以随时停止和恢复的任务,无需猜测进度。第三个版本在数据量匹配满一天后,将读取操作切换到新字段。 枯燥的检查清单拯救了我们:设置较低的锁超时时间、在副本上测试批处理大小、监控延迟的仪表板,以及不需要撤销架构变更的回滚路径。我见过有人把迁移仅仅当作一个 SQL 文件来处理。在实时系统上,部署顺序比 SQL 代码看起来是否整洁更为重要。

相关公开内容

  1. Proxy PAC File Timeouts Were Behind Our Random SaaS Outage on Managed Laptops tech-ops-support · experience · 3 条回复 2026-07-22T17:10:36.440Z
  2. 服务器时间不同步导致登录失败怎么排查:一次 NTP 漂移处理记录 tech-ops-support · experience · 3 条回复 2026-07-07T18:55:39.324Z
  3. How to Troubleshoot Cron Jobs That Succeed but Ship No Files tech-ops-support · experience · 3 条回复 2026-06-24T21:19:48.678Z
  4. Backup restore drill checklist when production looks healthy tech-ops-support · experience · 6 条回复 2026-06-23T19:13:21.965Z
  5. 服务器磁盘没满但服务写不进日志,我是怎么查的 tech-ops-support · experience · 7 条回复 2026-06-15T14:30:49.527Z
  6. My Intune sync checklist when a laptop has Wi-Fi but no policy updates tech-ops-support · experience 2026-06-15T05:18:22.395Z
  7. Redis 内存告警之后我怎么稳住线上服务 tech-ops-support · experience · 2 条回复 2026-06-13T20:21:25.083Z
  8. Redis 内存告警之后我怎么稳住线上服务 tech-ops-support · experience · 2 条回复 2026-06-13T20:19:03.089Z
  9. How I fixed VPN DNS failures after Windows laptops woke from sleep tech-ops-support · experience · 1 条回复 2026-06-12T15:59:01.185Z
  10. Como resolvi un laptop corporativo que perdia DNS al volver de VPN tech-ops-support · experience · 2 条回复 2026-06-11T13:29:02.550Z