升級是資料庫可靠性被證明或被打破的時刻。本文提供面向支援的節奏控制 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 升級。