Ce matin, j'ai participé à la mise à niveau d'une base de données PostgreSQL sur AWS RDS. Nous voulions passer de la version 9.3.3 à la version 9.4.4. Nous avions "testé" la mise à niveau sur une base de données intermédiaire, mais la base de données intermédiaire est à la fois beaucoup plus petite et n'utilise pas Multi-AZ. Il s'est avéré que ce test était assez insuffisant.
Notre base de données de production utilise Multi-AZ. Nous avons effectué des mises à niveau de versions mineures dans le passé, et dans ces cas, RDS mettra d'abord à niveau le serveur de secours, puis le promouvra en tant que maître. Par conséquent, le seul temps d'arrêt encouru est d'environ 60 secondes lors du basculement.
Nous avons supposé que la même chose se produirait pour la mise à niveau de la version principale, mais oh à quel point nous avions tort.
Quelques détails sur notre configuration:
- db.m3.large
- IOPS provisionnés (SSD)
- 300 Go de stockage, dont 139 Go sont utilisés
- Nous avions des mises à niveau du système d'exploitation RDS en suspens, nous voulions effectuer un lot avec cette mise à niveau pour minimiser les temps d'arrêt
Voici les événements RDS enregistrés lors de la mise à niveau:
Le processeur de la base de données a été maximisé entre environ 08h44 et 10h27. Une grande partie de ce temps semblait être occupée par RDS prenant un instantané avant et après la mise à niveau.
Les documents AWS ne préviennent pas de telles répercussions, bien qu'en les lisant, il est clair qu'une faille évidente dans notre approche est que nous n'avons pas créé une copie de la base de données de production dans la configuration Multi-AZ et que nous essayons de la mettre à niveau comme un essai
En général, c'était très frustrant parce que RDS nous a donné très peu d'informations sur ce qu'il faisait et combien de temps cela prendrait. (Encore une fois, faire un essai aurait aidé ...)
En dehors de cela, nous voulons apprendre de cet incident alors voici nos questions:
- Ce genre de chose est-il normal lors d'une mise à niveau de version majeure sur RDS?
- Si nous voulions faire une mise à niveau de version majeure à l'avenir avec un temps d'arrêt minimal, comment procéderions-nous? Existe-t-il une manière intelligente d'utiliser la réplication pour la rendre plus transparente?
ANALYZE
pour mettre à jour les statistiques l'a résolu. Si quelqu'un a une idée à ce sujet, ce serait bien aussi.