Aller au contenu

Administration avancée d'un cluster de shards#

Gestion des index#

  • Comprendre l'importance des index dans un cluster de shards
  • Créer et supprimer des index dans un cluster
    • Utiliser db.collection.createIndex() pour créer un index
    • Utiliser db.collection.dropIndex() pour supprimer un index
  • Index globaux vs index locaux
    • Index globaux : couvrent l'ensemble du cluster
    • Index locaux : spécifiques à un shard
  • Conseils pour optimiser les index
    • Éviter les index inutiles
    • Utiliser des index partiels
    • Utiliser des index "sparse" pour les champs optionnels

Modification de la shard key#

  • Comprendre les limitations pour modifier la shard key
    • La modification directe de la shard key n'est pas autorisée
  • Méthodes pour modifier la shard key
    • Méthode 1 : Créer une nouvelle collection avec la nouvelle shard key
      • Copier les données de l'ancienne collection vers la nouvelle
      • Supprimer l'ancienne collection
    • Méthode 2 : Utiliser la fonction refineCollectionShardKey() (MongoDB 4.4+)
      • Permet d'affiner la shard key existante en ajoutant des champs

Optimisation des performances du cluster#

  • Utiliser le profileur de requêtes pour identifier les requêtes lentes
    • Activer le profileur avec db.setProfilingLevel(level, options)
    • Analyser les résultats avec db.system.profile.find()
  • Utiliser mongotop et mongostat pour surveiller les performances en temps réel
  • Optimiser les requêtes avec les "Explainable objects"
    • Utiliser db.collection.explain() pour analyser les requêtes
  • Configurer les routeurs (mongos) pour répartir les requêtes
    • Utiliser les options readPreference, readPreferenceTags, maxStalenessSeconds
  • Exploiter la compression de données (WiredTiger)
    • Configurer la compression avec storage.wiredTiger.collectionConfig.blockCompressor

Gestion des erreurs et dépannage#

  • Surveiller les logs MongoDB pour identifier les erreurs
    • Logs accessibles dans le dossier /var/log/mongodb sur Linux
  • Gérer les problèmes de connexion aux serveurs de configuration (config servers)
    • Vérifier la connectivité réseau
    • Vérifier l'état des serveurs de configuration avec rs.status()
  • Résoudre les problèmes liés aux routeurs (mongos)
    • Vérifier la configuration du routeur
    • Redémarrer le routeur si nécessaire
  • Diagnostiquer les problèmes de performances
    • Utiliser les outils de monitoring mentionnés précédemment
    • Identifier les goulets d'étranglement et ajuster la configuration en conséquence