เช้านี้ฉันมีส่วนร่วมในการอัพเกรดฐานข้อมูล PostgreSQL บน AWS RDS เราต้องการย้ายจากรุ่น 9.3.3 ไปเป็นรุ่น 9.4.4 เราได้ "ทดสอบ" การอัปเกรดบนฐานข้อมูลการแสดงละคร แต่ฐานข้อมูลการแสดงละครมีขนาดเล็กกว่ามากและไม่ใช้ Multi-AZ ปรากฎว่าการทดสอบนี้ค่อนข้างไม่เพียงพอ
ฐานข้อมูลการผลิตของเราใช้ Multi-AZ เราได้ทำการอัปเกรดรุ่นรองในอดีตและในกรณีเหล่านั้น RDS จะอัปเกรดสแตนด์บายก่อนแล้วจึงเลื่อนระดับเป็นหลัก ดังนั้นการหยุดทำงานเพียงครั้งเดียวที่เกิดขึ้นคือ ~ 60 วินาทีในระหว่างการล้มเหลว
เราสันนิษฐานว่าสิ่งเดียวกันจะเกิดขึ้นสำหรับการอัปเกรดเวอร์ชันหลัก แต่โอ้ว่าเราผิดอย่างไร
รายละเอียดบางอย่างเกี่ยวกับการตั้งค่าของเรา:
- db.m3.large
- IOPS ที่จัดสรร (SSD)
- ที่เก็บข้อมูล 300 GB ซึ่งมีการใช้งาน 139 GB
- เรามีการอัปเกรด RDS OS ที่โดดเด่นเราต้องการแบทช์ด้วยการอัพเกรดนี้เพื่อลดเวลาหยุดทำงาน
นี่คือเหตุการณ์ RDS ที่ถูกบันทึกไว้ในขณะที่เราทำการอัพเกรด:
ซีพียูฐานข้อมูลถูกขยายให้ใหญ่สุดระหว่างประมาณ 08:44 ถึง 10:27 เวลานี้ดูเหมือนว่าจะถูกครอบครองโดย RDS โดยถ่ายสแน็ปช็อตก่อนและหลังอัพเกรด
เอกสาร AWSไม่ต้องเตือนผลกระทบดังกล่าวแม้ว่าจากการอ่านพวกเขามันเป็นที่ชัดเจนว่าข้อบกพร่องที่เห็นได้ชัดในแนวทางของเราคือการที่เราไม่ได้สร้างสำเนาของการผลิตฐานข้อมูลในการติดตั้ง Multi-AZ และพยายามที่จะอัพเกรดเป็น ทดลองใช้งาน
โดยทั่วไปมันน่าหงุดหงิดมากเพราะ RDS ให้ข้อมูลเพียงเล็กน้อยกับเราเกี่ยวกับสิ่งที่กำลังทำอยู่และใช้เวลานานเท่าใด (อีกครั้งการทดลองใช้งานจะช่วยได้ ... )
นอกจากนั้นเราต้องการเรียนรู้จากเหตุการณ์นี้ดังนั้นนี่คือคำถามของเรา:
- สิ่งนี้เป็นเรื่องปกติหรือไม่เมื่อทำการอัปเกรดเวอร์ชันหลักใน RDS
- หากเราต้องการอัพเกรดเวอร์ชั่นใหญ่ในอนาคตโดยมีเวลาหยุดทำงานน้อยที่สุดเราจะทำอย่างไร? มีวิธีที่ชาญฉลาดในการใช้การจำลองแบบเพื่อให้ราบรื่นมากขึ้นหรือไม่?
ANALYZE
การอัปเดตสถิติแก้ไขได้ หากใครมีความเข้าใจเกี่ยวกับเรื่องนี้ก็จะดีเช่นกัน