Heute Morgen war ich an der Aktualisierung einer PostgreSQL-Datenbank auf AWS RDS beteiligt. Wir wollten von Version 9.3.3 auf Version 9.4.4 umsteigen. Wir haben das Upgrade für eine Staging-Datenbank "getestet", aber die Staging-Datenbank ist viel kleiner und verwendet Multi-AZ nicht. Es stellte sich heraus, dass dieser Test ziemlich unzureichend war.
Unsere Produktionsdatenbank verwendet Multi-AZ. In der Vergangenheit haben wir kleinere Versions-Upgrades durchgeführt. In diesen Fällen aktualisiert RDS zuerst den Standby-Modus und befördert ihn dann zum Master. Die einzige Ausfallzeit während des Failovers beträgt daher ~ 60 Sekunden.
Wir gingen davon aus, dass dies auch für das Hauptversions-Upgrade passieren würde, aber wie falsch wir waren.
Einige Details zu unserem Setup:
- db.m3.large
- Bereitgestelltes IOPS (SSD)
- 300 GB Speicher, davon 139 GB
- Wir hatten ausstehende RDS-Betriebssystem-Upgrades. Wir wollten dieses Upgrade stapelweise ausführen, um Ausfallzeiten zu minimieren
Hier sind die RDS-Ereignisse, die während des Upgrades protokolliert wurden:
Die CPU der Datenbank wurde zwischen 08:44 und 10:27 Uhr ausgelastet. Ein Großteil dieser Zeit schien mit der Erstellung eines Pre-Upgrade- und Post-Upgrade-Snapshots durch RDS belegt zu sein.
Die AWS-Dokumente warnen nicht vor solchen Auswirkungen, obwohl es nach dem Lesen klar ist, dass ein offensichtlicher Fehler in unserem Ansatz darin besteht, dass wir im Multi-AZ-Setup keine Kopie der Produktionsdatenbank erstellt und versucht haben, sie als zu aktualisieren ein Probelauf
Im Allgemeinen war es sehr frustrierend, weil RDS uns nur sehr wenige Informationen darüber gab, was es tat und wie lange es wahrscheinlich dauern würde. (Auch hier hätte ein Probelauf geholfen ...)
Abgesehen davon möchten wir aus diesem Vorfall lernen. Hier sind unsere Fragen:
- Ist dies normal, wenn Sie ein Hauptversions-Upgrade für RDS durchführen?
- Wie würden wir vorgehen, wenn wir in Zukunft ein größeres Versions-Upgrade mit minimalen Ausfallzeiten durchführen möchten? Gibt es eine clevere Möglichkeit, die Replikation nahtloser zu gestalten?
ANALYZE
zur Aktualisierung der Statistiken löste es. Wenn jemand einen Einblick darüber hat, wäre das auch großartig.