升级是数据库可靠性被证明或被打破的时刻。本文提供面向支持的节奏控制 runbook,用于在 Couchbase Autonomous Operator(CAO) 下升级 Couchbase Server,利用原生字段 spec.paused 在节点之间门控进度。结果是:一次一个节点、交换之间有稳定窗口、信号更清晰、回滚窗口更大。
参考拓扑
节奏控制升级循环
目标
- 以最小风险升级 Couchbase Server。
- 在节点之间保持刻意的暂停 + 稳定 + 健康检查窗口。
- 在可行范围内尽可能长时间保留回滚选项。
升级前检查清单(不可跳过)
- 全部绿灯:集群阶段为
Available,无活动 rebalance,无 Warning 事件。 - 备份最新且可恢复:已完成全量备份;已做过恢复演练或清楚所需时间。
- 记录回滚标签:确认旧镜像仍存在且可拉取。
- 记录 XDCR 决策:生产升级期间禁用以获得干净信号(推荐),或在预生产保持运行以演练行为。
快速验证命令
export ENV=dev
export REGION=west
export NS=couchbase-${ENV}-${REGION}
kubectl -n "$NS" get couchbasecluster -o wide
kubectl -n "$NS" get pods -l app=couchbase
kubectl -n "$NS" get events --field-selector type=Warning | tail -20
kubectl -n "$NS" get couchbasecluster "$NS" -o jsonpath='paused={.spec.paused} phase={.status.phase} rebalance={.status.rebalanceProgress}{"\n"}'
执行路径
- 首选:从 CI workflow 运行升级(先 dry-run,再正式执行)。
- 备选:在 workstation 上运行节奏控制升级脚本(先 dry-run,再正式执行)。
监控信号(支持应关注什么)
- Pod 镜像:从旧 → 新切换;理想情况是一次一个 swap。
- 暂停状态:稳定期间
spec.paused为 true;切勿无人值守地保持 true。 - Rebalance:在 swap 之间回到 none;持续 rebalance 需排查。
- XDCR:
changes_left在 rebalance 时升高,在稳定期下降;无法下降是事件信号。 - 重启:swap 后任何意外重启都是红旗。
回滚触发条件
- 节点在超时窗口内未变为健康。
- Rebalance 失败,且调查后单次重试无法解决。
- 应用错误率超过约定容差。
- XDCR 在约定恢复窗口后仍未恢复。
- 任何 bucket 不可用(缺失 vbuckets)——按 P1 处理。
升级后验证(签收)
- 所有 pod 使用目标镜像
- 集群阶段为
Available - 30+ 分钟内无新的 Warning 事件
- 升级后备份成功
- XDCR 稳态已恢复(若使用)
- 应用仪表盘持续绿灯 30+ 分钟
提示:若想先看更短的叙事版,从博客概览开始:带 CAO 暂停门控的 Couchbase 升级。