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
- 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