Je continuais d'insérer des données dans mongodb autosharded. (pas de mise à jour, seulement d'insertion)nosql mongodb réplicaset autosharding, perte de données lors de l'exécution d'une expérience
Configuration expérimentale 2 fragments, chaque fragment a 2 nœuds.
dans shard1 -> node1 (primaire), node2 dans shard2 -> node3 (primaire), node4
dans un tesson j'ai apporté noeud secondaire (node2) vers le bas -> encore les données se sont correctement insérées maintenant J'ai ramené le primaire (node1) vers le bas -> le fragment complet est en baisse maintenant
Étonnamment, l'ensemble de la configuration de mongo ne prenait aucune écriture.
Il y a une autre tournure dans l'histoire. Maintenant, j'ai apporté le node2, car c'est le seul nœud disponible, il est devenu primaire et a commencé à accepter des données.
Après environ 10 minutes, j'ai amené le noeud 1 également.
Mais quand j'ai vérifié les données que je l'ai inséré dans node1 (quand node2 est vers le bas) a été perdu :(.
s1 s2
(n1,n2) (n3,n4)
--------- ---------
1. (up,up) (up, up) -> data was getting inserted
2. (up,down) (up, up) -> data was getting inserted properly (but got lost :()
3. (down, down) (up, up) -> no data inserts were happening
4. (down, up) (up, up) -> started taking data again
5. (up, up) (up, up) -> n1 picked data from n2, but couldn't give the data to n2
dans la dernière étape, quand j'ai apporté n1 en place, il a obtenu les nouveaux records de n2, mais le n1 obtenu lors de l'étape 2 ci-dessus ont été complètement perdu :(.
Est-ce comportement attendu de mongo?
Quelqu'un s'il vous plaît aidez-moi, je peux courir plus d'expériences si nécessaire :).
Merci d'avance, Vivekananda Tadala
merci pour la réponse, il a effacé beaucoup de mes doutes, mais y at-il un moyen d'obtenir les données sur le maître mort et le pousser au nouveau maître? pouvons-nous faire quelque chose avec l'oplog? –
Oui ... au moins en théorie. Chaque fois qu'une restauration se produit, les données doivent être écrites dans un fichier .bson dans le répertoire de données. Vous pouvez utiliser mongorestore pour l'appliquer au maître actuel. Cependant, nous (développeurs de MongoDB) parlions aujourd'hui de la façon dont nous n'étions pas sûrs s'il écrivait réellement dans le fichier de restauration, donc il pourrait y avoir un bug là. Mais s'il y en a, ce sera corrigé par 1.8.0. – kristina
Fausse alarme, ce n'est pas cassé. Les données seront stockées dans un répertoire/rollback, voir http://www.snailinaturtleneck.com/blog/2011/01/19/how-to-use-replica-set-rollbacks/. – kristina