版本升级 / 补丁回退
症状
升级/打补丁后出现问题:性能回退、应用不兼容或数据库无法打开。
1. 先停下来:你有回退方案吗?
若在生产环境升级之前没有做完整备份 +(如有可能)存储快照,最安全的做法是向前修复。在大多数数据库中,回退意味着从备份还原。这一步本应在升级之前就规划好。
2. 对问题进行分类
是优化器计划回归(查询变慢)、应用/驱动不兼容,还是无法打开/损坏?解决路径会因此大不相同。
3. 各数据库的回退路径
Oracle:用 datapatch 回退补丁,或使用 Flashback Database(若已创建 guaranteed restore point)。PostgreSQL:pg_upgrade 之后的回退 = 旧二进制文件 + 旧数据目录的备份。MySQL:原地降级(DOWNGRADE)通常不受支持——请从备份还原。SQL Server:不支持降级——从升级前的备份还原。无论哪种情况:快照/备份都是你的保险。
4. 若是计划回归:无需回滚即可修复
通常不需要回滚整个版本;只是计划发生了变化。
Oracle
ALTER SYSTEM SET optimizer_features_enable='19.1.0'; -- pin to the old behavior
-- or lock in the good plan with a SQL Plan BaselinePostgreSQL
ANALYZE; -- fresh statistics first
-- if needed, temporarily: steer the plan with settings such as SET enable_nestloop=off;5. 永久措施:下一次
先在预发布环境用真实负载测试升级,采用金丝雀/滚动升级,创建 guaranteed restore point / 快照,并记录回退流程。