| Scroll Ignore | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
|
Objectif
Le but de cette page est de migré les moteurs de stockage des serveurs qui contient les données (mongod) de MMapV1 vers WiredTiger
Prévoyez 2 période de maintenance car il faudra stoppé le Synchroniser 2 fois pendant 9 sec + le temps de démarrage du Synchroniser .
Il pourrait y avoir des impact sur les Schedulers et Brokers si l'élection dur plus de 9 sec.
Alors il faudra augmenté auto_reconnect_max_try/auto_reconnect_sleep_between_try dans les modules SLA / Event
Préparation
| Warning | ||
|---|---|---|
| ||
Avant toute opération, faites un shinken-backup complet ( ou avec les options qui permettent de sauvegarder les données ) du serveur de production impacté. |
Exemple d'architecture de Cluster MongoDB
| Panel |
|---|
Liste des commandes pour suivre l'état de votre Cluster MongoDB
Quel format de donnée votre MongoDB utilise?
| Code Block | ||
|---|---|---|
| ||
mongo shinken --port PORT_DE_MONGOD --quiet --eval "print(db.serverStatus().storageEngine.name)" |
| Tip |
|---|
| Si le format est WiredTiger, il ne serra pas nécessaire de migré ce mongod |
Récupérer la configuration du cluster
| Code Block | ||
|---|---|---|
| ||
mongo shinken --port PORT_DE_MONGOD --quiet --eval "printjson(rs.conf())" |
| Tip |
|---|
Vérifier que les champs "host" contiennent bien les adresses des serveurs que vous voulez migrer Vérifier si vous avez un Arbiter MongoDB que celui ci est bien "arbiterOnly" : true |
Surveiller l'état du cluster
| Code Block | ||
|---|---|---|
| ||
watch -n 1 'mongo shinken --port PORT_DE_MONGOD --quiet --eval "printjson(rs.status())"' |
| Tip |
|---|
Utiliser un PORT_DE_MONGOD d'un mongod sur lequel vous ne faite pas de migration Le mieux est d'utiliser cette commande dans un shell à par toujours visible afin de :
Description des états du Cluster MongoDB : https://docs.mongodb.com/v3.0/reference/replica-states/ |
Procédure de migration d'un mongod
1) Éteindre mongod
Si ce Cluster MongoDB contient des données de Synchronizer :et qu'il y a un membre avec une "priority" plus grande que les autres membre
Pour le membre "PRIMARY" avec la plus grande "priority" ( Voir "Surveiller l'état du cluster" pour vérifié qui est le "PRIMARY" ) il faudra éteindre le Synchronizer avant et le rallumer après l'élection d'un nouveau "PRIMARY"
| Code Block | ||
|---|---|---|
| ||
service mongod stop |
2) Supprimer les données dans la base
| Code Block | ||
|---|---|---|
| ||
cd /var/lib/mongo rm -fr * |
3) Démarré mongod
Si ce Cluster MongoDB contient des données de Synchronizer :et qu'il y a un membre avec une "priority" plus grande que les autres membre
Si vous avez migré le membre "PRIMARY" avec la plus grande "priority" ( Voir "Surveiller l'état du cluster" pour vérifié qui est le "PRIMARY" ) il faudra éteindre le Synchronizer avant et le rallumer après l'élection d'un nouveau "PRIMARY"
| Code Block | ||
|---|---|---|
| ||
service mongod start |
