DBAtlas · Atlas d'exploitation des bases de données

Rolling upgrade MongoDB (7.0 → 8.0) : replica set et sharded cluster

MongoDBNiveau: AvancéDurée: 60–120 min (indépendamment du volume de données ; quelques minutes par membre)

Met à niveau sans interruption (rolling) vers la 8.0 un replica set ou un sharded cluster MongoDB 7.0 en service : pré-vérifications (version, FCV, état des membres, compatibilité des pilotes), sauvegarde, secondaries d'abord, puis stepDown et ancien primary ; pour un sharded cluster, l'ordre est arrêt du balancer, config servers, shards, mongos. Le passage de la FCV en 8.0 peut être reporté après la période de burn-in ; les options de retour arrière et leurs limites sont incluses. Pour une mise à jour de patch dans la même version majeure (8.0.x → 8.0.y), le dépôt ne change pas et le même ordre des membres s'applique ; depuis la 6.0, passez d'abord en 7.0.

Topologie: Replica set (3 membres ou plus) ou sharded cluster (config servers + shards + mongos)

Avant de commencer

  • Tous les …mongod (config servers et membres des shards) et mongos…membres… tournent en 7.0.x avec la FCV 7.0. Si vous venez de la 6.0, passez d'abord en 7.0 (on ne saute pas de version majeure).
  • Aucun membre n'est en état ROLLBACK/RECOVERING/STARTUP2 ; les secondaries ont quelques secondes de retard sur le primary.
  • La fenêtre d'oplog est bien plus longue que la durée de maintenance (arrêt par membre), au moins plusieurs heures. Si elle est courte, le membre arrêté aura besoin d'un initial sync à son retour.
  • Tous les pilotes applicatifs sont dans une version compatible avec MongoDB 8.0 (tableau de compatibilité des pilotes). Les anciens pilotes peuvent ne pas se connecter à la 8.0 ou ne pas prendre en charge les nouveaux comportements.
  • La page des changements de compatibilité de la 8.0 a été lue ; vous n'utilisez aucune fonctionnalité supprimée ou modifiée (paramètre, commande, comportement de requête). Si possible, la mise à niveau a d'abord été répétée dans un environnement de test.
  • Une sauvegarde récente, dont la restauration a été testée, existe (snapshot ou mongodump). La fenêtre de maintenance est validée.
  • Chaque membre dispose d'assez d'espace libre sur le disque de données et dans /var/log, et a accès au dépôt 8.0 (repo.mongodb.org).
  • Sur les membres config server et shard, mongod tourne avec le service systemd mongod et /etc/mongod.conf ; sur les serveurs mongos, le nom du service est …. Chaque serveur fait tourner un seul processus mongod/mongos.
  • Le balancer peut être arrêté pendant la fenêtre de mise à niveau ; aucune migration de chunk, aucun resharding ni aucune construction d'index n'est en cours. Aucune modification de shard key ou de metadata de collection n'est prévue pendant la maintenance.

Phases du guide

  • Contrôles préalables — Version, FCV et rôle (tous les …mongod…membres…) · État des membres et retard de réplication · État du cluster, shards et balancer · Collections system.buckets invalides · Contrôle des pilotes et de la compatibilité · Sauvegarde et point de retour …
  • Changement de dépôt (tous les membres) — Ajouter le dépôt 8.0, désactiver le dépôt 7.0 · Ajouter le dépôt 8.0, désactiver le dépôt 7.0
  • Mettre à niveau les secondaries un par un — Secondary : vérifier que … n'est pas primary et l'arrêter · Secondary : installer les binaires 8.0 sur … · Secondary : régler THP pour la 8.0 sur … · Secondary : démarrer … et attendre l'état SECONDARY · Secondary : vérifier que … n'est pas primary et l'arrêter · Secondary : installer les binaires 8.0 sur … …
  • Retirer le primary et le mettre à niveau — Vérifier que les secondaries sont en 8.0 et sains · Retirer le primary (stepDown) · Ancien primary : vérifier que … n'est pas primary et l'arrêter · Ancien primary : installer les binaires 8.0 sur … · Ancien primary : régler THP pour la 8.0 sur … · Ancien primary : démarrer … et attendre l'état SECONDARY
  • Arrêter le balancer — Arrêter le balancer et vérifier que les migrations sont terminées
  • Redémarrer le balancer et vérifier les versions — Vérifier que tous les composants sont en 8.0 · Redémarrer le balancer
  • Vérification — Tous les membres en 8.0 · Contrôle de l'application et des journaux
  • featureCompatibilityVersion 8.0 — Passer la FCV en 8.0 · Vérifier la FCV
  • Retour arrière (uniquement en cas de problème) — Choisir la voie de retour arrière · Ramener les binaires en 7.0 : … · Restauration depuis la sauvegarde · Ordre du retour arrière dans un sharded cluster
Ouvrir le plan pas à pas adapté à votre environnement →