蓝-绿部署无法将您从糟糕的迁移中解救出来
部署在90秒内变绿。然后蓝色的错误率达到100%每个请求都很感人/orders归来的column orders.status_v2 does not exist。两个健康的应用堆栈没有工作回滚。蓝绿色只保护一样东西Blue-green为您提供了两份应用程序代码和一个在它们之间切换的路由器。它不会给你数据库的两个副本因为你不能廉价地派生一个具有连续写操作的Postgres集群并在以后合并这些派生。两种环境都指向相同的主机、相同的模式、相同的表。所以现在migrate完成蓝色运行新模式的新代码绿色运行相同新模式的旧代码。交换是原子性的。架构更改不是。这就是让我们倒下的迁移:ALTER TABLE orders DROP COLUMN status; ALTER TABLE orders ADD COLUMN status_v2 text NOT NULL DEFAULT pending;秩序很重要。绿色仍然可以选择status。在之间DROP一旦green停止服务每个green查询都会失败。只要路由器耗尽加上每个进行中的请求加上每次重试绿色就会一直服务。回滚计划说“翻转回蓝色。”在翻转之前蓝色已经被一次迁移打破了。回滚意味着两件不同的事情代码回滚是指针变化:翻转路由器旧的神器依然存在。只有当底层数据仍然符合时它才起作用。架构回滚不对称。的反面DROP COLUMN是ADD COLUMN价值观就没了。您不能取消删除列、取消截断表或取消运行UPDATE就地重写了行。数据库只有一种状态它向前移动并且没有指向以前的版本。还有第三种更糟糕的情况:迁移中途失败。Postgres在一个事务中运行大多数DDL所以a失败了ALTER TABLE里面的BEGIN干净利落地回滚。而是一个包含几个语句的文件一些CONCURRENTLY或者步骤之间的显式提交会留下一个既不是旧形状也不是新形状的架构。这是没有人排练过的状态。可逆模式不可逆数据我应该在部署之前就区分出来。当旧代码仍然可以在新模式下运行时模式更改是可逆的。添加一个可空的列、一个索引、一个表——都是可逆的因为旧代码忽略了它不知道的内容。当迁移重写或删除值时数据更改是不可逆的。删除列、有损类型转换、计算值的回填—新形状不是从旧形状派生出来的因此没有反向迁移会重建它。可逆的模式更改通常伴随着不可逆的数据更改。这就是陷阱。ADD COLUMN status_v2一个人很安全。ADD COLUMN加上回填加上DROP COLUMN在一个文件是一个单向的门。扩展、收缩、标记安全路径有三次释放而不是两次。释放一:展开。将新列添加为可空并在应用程序代码中重复写入。旧代码读取旧列并继续工作。新代码将两者都写入。如果您回滚没有什么会中断因为两个形状都存在。def write_order(order): db.execute( UPDATE orders SET status %s, status_v2 %s WHERE id %s, (order.legacy_status, order.status, order.id), )版本2:在部署之外用一个可以停止的查询进行批量回填。回填必须可重新开始。分块运行记录上一次处理的id然后重新运行。版本3:将读数切换到功能标志后面的新列。标志是回滚。如果读取中断翻转标志而不是部署。只有在标志开启了一个完整的流量周期之后您才会收缩——在代码不再引用它的无聊版本中删除旧列。在降落前做旗子而不是在降落后。旗帜在几秒钟内是可逆的aDROP COLUMN不是。当迁移已经被部分应用时停止部署。不要回滚应用程序也不要运行第二次迁移来“修复”第一次迁移。这两者都使得模式更难推理。找出到底是什么着陆了。在Postgres中读取真实状态而不是信任您的迁移表:SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_name orders ORDER BY ordinal_position;然后检查迁移是否持有锁。pg_stat_activity和pg_locks显示被阻止的ACCESS EXCLUSIVE等待长时间的读取。如果它是一个陈旧的报告查询或者是您的下一个部署死锁则终止拦截器。然后挑一个方向提交。如果旧的形状仍然存在就用标志禁用新的代码路径不去管模式——这样就可以重新发布一个了。如果旧的模式消失了唯一的道路就是前进:发布与当前模式匹配的代码修补今天失败的查询并接受您是在压力下部署的。仅当您能够承受丢失自迁移以来写入的所有数据时才从备份恢复并首先测量该窗口。我记住的教训是:数据库不是部署目标。这是一个共享的、单一状态的依赖关系每次迁移都是对生产数据的更改。使用实际的行数在副本上预演迁移并记录持有锁的时间。本文来源于铭煌网www.iissbbs.com

相关新闻

delta 彩色 Diff 导出为 HTML/PDF:基于 ansifilter 的完整实践指南

delta 彩色 Diff 导出为 HTML/PDF:基于 ansifilter 的完整实践指南

开发工具CLI 【免费下载链接】delta A syntax-highlighting pager for git, diff, grep, rg --json, and blame output 项目地址: https://gitcode.com/gh_mirrors/de/delta 点击查看 免费下载 导读 本文介绍如何使用 delta 将 git show、git diff 等输出的彩色 d…

2026/9/30 2:33:51 阅读更多 →
每日学习30分轻松掌握CursorAI:用TaoToken统一Key打通自然语言编程工作流

每日学习30分轻松掌握CursorAI:用TaoToken统一Key打通自然语言编程工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 2:33:51 阅读更多 →
恩智浦 T1022 开发常见问题解答:系统、接口、定制化全汇总

恩智浦 T1022 开发常见问题解答:系统、接口、定制化全汇总

针对恩智浦 T1022 天脉开发板,整理了开发者从选型、上手到开发全流程最高频的 8 个问题,覆盖系统适配、硬件参数、接口能力、定制服务、量产过渡等核心疑问,集中做精准解答,帮大家快速排查问题,少走开发弯路。1. T1022…

2026/9/30 2:32:51 阅读更多 →

最新新闻

以 Weather Reporter 为单一线索重构演讲:Claude Code 五段式 Agentic 教学路径的叙事设计与落地

以 Weather Reporter 为单一线索重构演讲:Claude Code 五段式 Agentic 教学路径的叙事设计与落地

文档教程AI 技能 【免费下载链接】claude-code-best-practice from vibe coding to agentic engineering - practice makes claude perfect 项目地址: https://gitcode.com/GitHub_Trending/cl/claude-code-best-practice 点击查看 免费下载 这份学习旅程文档&…

2026/9/30 6:58:07 阅读更多 →
JAVA V6 多商户商城 开发文档——手机端前端

JAVA V6 多商户商城 开发文档——手机端前端

准备工作​ 概述​ uni-app 是一个使用 Vue.js 开发所有前端应用的框架,支持同时生成 ios、Android、H5、以及各种小程序等多平台应用。本项目基于 Vue 3、Vite 和 TypeScript 构建,集成了 Pinia 状态管理、uview-plus UI 组件库和 WindiCSS 样式框架 …

2026/9/30 6:58:07 阅读更多 →
厂区地磅改无人值守,系统怎么选?

厂区地磅改无人值守,系统怎么选?

厂区地磅准备改成无人值守,常见的第一反应是:买一套软件,接上车牌识别和道闸,就能自动过磅了。 实际改造涉及的不只是软件。车辆识别、称重仪表、道闸、红外检测、视频留证、异常处理和业务系统对接都要配合起来。任何一个接口或…

2026/9/30 6:58:07 阅读更多 →
【Spring】后端接收的请求参数多了一个逗号的处理办法

【Spring】后端接收的请求参数多了一个逗号的处理办法

◆ 博主名称: QuZhengRong AI俘虏,样式苦手 ⭐️ LuckReport专栏:LuckReport⭐️ SpringBoot专栏:SpringBoot⭐️ SpringCloud专栏:SpringCloud目录一、问题现象二、原因定位三、前端传参修正四、项目推荐1、项目简介2…

2026/9/30 6:58:07 阅读更多 →
G-Helper 卸载 Armory Crate 后弹窗不停?3 分钟清掉残留服务

G-Helper 卸载 Armory Crate 后弹窗不停?3 分钟清掉残留服务

G-Helper 卸载 Armory Crate 后弹窗不停?3 分钟清掉残留服务 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbo…

2026/9/30 6:58:07 阅读更多 →
在苏州创业,工商财税少踩坑|好账本财税郭俊希:帮初创企业稳稳起步

在苏州创业,工商财税少踩坑|好账本财税郭俊希:帮初创企业稳稳起步

很多在苏州准备创业的朋友,以为办一张营业执照只是填几张表格那么简单。等到自己反复跑政务大厅、核名反复驳回、后期报税逾期收到罚款,才明白注册公司、代理记账这件事,看着门槛不高,里面藏着不少本地政策细节。我是郭俊希&#…

2026/9/30 6:57:07 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →