อัปเกรดคือจุดที่ความน่าเชื่อถือของฐานข้อมูลถูกพิสูจน์หรือพัง บทความนี้ให้ runbook แบบควบคุมจังหวะ ที่เป็นมิตรกับซัพพอร์ต สำหรับอัปเกรด Couchbase Server ภายใต้ Couchbase Autonomous Operator (CAO) โดยใช้ฟิลด์เนทีฟ spec.paused เพื่อเกตความคืบระหว่างโหนด ผลลัพธ์: ทีละโหนด หน้าต่างเสถียรระหว่าง swap สัญญาณชัดขึ้น และหน้าต่าง rollback กว้างขึ้น
โทโพโลยีอ้างอิง
ลูปอัปเกรดแบบ paced
เป้าหมาย
- อัปเกรด Couchbase Server ด้วยความเสี่ยงต่ำสุด
- คงหน้าต่างpause + ทำให้เสถียร + ตรวจสุขภาพระหว่างโหนดอย่างตั้งใจ
- รักษาตัวเลือกรollbackให้นานที่สุดตามที่เป็นไปได้
เช็คลิสต์ก่อนอัปเกรด (ห้ามข้าม)
- เขียวทั้งหมด: เฟสคลัสเตอร์
Availableไม่มี rebalance ที่กำลังทำงาน ไม่มี Warning events - แบ็กอัปปัจจุบันและกู้คืนได้: แบ็กอัปเต็มเสร็จ; ซ้อมกู้คืนแล้วหรือเข้าใจเวลา
- บันทึกแท็ก rollback: ตรวจว่าอิมเมจเก่ายังอยู่และดึงได้
- บันทึกการตัดสินใจ XDCR: ปิดระหว่างอัปเกรดโปรดักชันเพื่อสัญญาณสะอาด (แนะนำ) หรือเปิดไว้ใน pre-prod เพื่อฝึกพฤติกรรม
คำสั่งตรวจยืนยันด่วน
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 ก่อน แล้วค่อยจริง)
- ทางสำรอง: รันสคริปต์อัปเกรดแบบ paced จาก workstation (dry-run ก่อน แล้วค่อยจริง)
สัญญาณมอนิเตอร์ (ซัพพอร์ตควรดูอะไร)
- อิมเมจพอด: เปลี่ยนจากเก่า → ใหม่; หนึ่ง swap ต่อครั้งคืออุดมคติ
- สถานะ pause:
spec.pausedเป็น true ระหว่างเสถียร; อย่าปล่อย true โดยไม่มีคนเฝ้า - Rebalance: กลับเป็น none ระหว่าง swap; สอบสวน rebalance ค้าง
- XDCR:
changes_leftพุ่งตอน rebalance และลดตอนเสถียร; ไม่ลดคือสัญญาณเหตุการณ์ - รีสตาร์ต: รีสตาร์ตที่ไม่คาดคิดหลัง swap คือธงแดง
ทริกเกอร์ rollback
- โหนดไม่ healthy ภายในหน้าต่าง timeout
- Rebalance ล้มเหลวและแก้ไม่ได้ด้วย retry ครั้งเดียวหลังสอบสวน
- อัตราผิดพลาดของแอปเกินความทนทานที่ตกลง
- XDCR ไม่ฟื้นภายในหน้าต่าง recovery ที่ตกลง
- bucket ใด ๆ ไม่พร้อมใช้ (vbuckets หาย) — ถือเป็น P1
การตรวจหลังอัปเกรด (sign-off)
- พอดทั้งหมดใช้อิมเมจเป้าหมาย
- เฟสคลัสเตอร์
Available - ไม่มี Warning events ใหม่เป็นเวลา 30+ นาที
- แบ็กอัปสำเร็จหลังอัปเกรด
- XDCR กลับสู่ steady-state (ถ้าใช้)
- แดชบอร์ดแอปเขียวต่อเนื่อง 30+ นาที
ทิป: ถ้าต้องการเวอร์ชันเล่าเรื่องสั้นก่อน เริ่มจากสรุปบล็อก: อัปเกรด Couchbase ด้วยประตู pause ของ CAO