2010-12-02 4 views
3

J'ai actuellement une configuration mongoDB avec un serveur mongos, un serveur de configuration, et 2 fragments de 3 serveurs mongod (maître-esclave) chacun. Je voudrais m'assurer que quand je les éteins, ils sont fermés proprement pour ne pas perdre les données qui sont en file d'attente ou pendant que le serveur est en train de déterminer le fragment, etc.Éteindre Cluster MongoDB Sharded proprement

Quelle est la meilleure pratique actuelle? pour arrêter un cluster de serveurs MongoDB?

Quel ordre sont des choses mieux pour être arrêté dans, numéro fsync, verrous en écriture, etc ..

Je voudrais écrire un script pour automatiser ce pour faciliter les sauvegardes, le nouveau code pousse, et tout le reste autrement, la base de données doit être dans un état cohérent.

+0

Je ne suis pas sûr de vos besoins exacts, mais je crois que la meilleure pratique serait de * ne * * pas éteindre aucun des fragments. Si c'est à des fins de sauvegarde, il serait préférable de retirer l'esclave (s) et de sauvegarder ceux-ci, n'est-ce pas une option? –

+0

qu'est-ce que cela signifie "2 fragments de 3 serveurs mongod (maître-esclave) chacun" parlez-vous de 2 fragments où chaque fragment est composé d'un jeu de réplicas à 3 nœuds? –

+0

Oui, c'est ce que je voulais dire, désolé à ce sujet. –

Répondre

3

Ces bonnes pratiques sont toujours en train d'être clarifiées.

Avec votre configuration voici comment je ferais la maintenance du serveur.

sauvegardes

Trouver un non-primaire dans chaque ensemble de répliques. Effectuez un fsync & lock. Copie, tar, sauvegarde. Débloquez la base de données.

Vous devriez être en mesure de le faire avec succès sur un ensemble de réplicas. Si vous êtes vraiment inquiet, vous pouvez verrouiller fsync & puis un arrêt.

Compressions

Vous voulez probablement compresser les données à un moment donné. La façon la plus simple de faire ceci est de faire un verrou fsync & puis de faire un db.repairDatabase(). La commande de réparation fera essentiellement une "défragmentation/compression" pour vous. Comme ci-dessus, cela peut aussi être en panne avec un arrêt.

code pousse

Idéalement, il y a très peu qui doit être cohérente en ce qui concerne une poussée de code. Au pire, vous devrez gérer la création/suppression d'index. Mais ceci doit vraiment être géré séparément car vous ne voulez pas que les développeurs ajoutent aléatoirement des index sur une base de données de production.

Surveillance

Ceci est un moyen de sujet plus complexe, mais vous aurez probablement envie de regarder pour des choses comme « qui est maître », « ce que le débit d'écriture sur chaque noeud », « comment suis beaucoup RAM J'utilise "," combien de données se déplacent entre les nœuds ". Il y a des outils limités pour le faire en ce moment, alors attendez-vous à rouler le vôtre.