MongoDB C # modification de la configuration du jeu de réplicas

J'utilise le pilote C# pour travailler avec MongoDB. J'ai besoin d'utiliser mon programme pour mettre à jour la config set pendant l'exécution, puis permettre à d'autres parties du programme de continuer à utiliser le pilote.

Mon problème actuel consiste à reconfigurer le pilote pour utiliser le nouvel ensemble.

try
{
    var res = Database.Admin.RunCommand(new CommandDocument("replSetReconfig", replicaSetConfig));
}
catch (EndOfStreamException){}
catch (Exception e)
{
    Log.Exc("Problem updating replica set", e);
    ranCommand = false;
}
if (ranCommand)
{
HERE - I need to update the MongoClient or MongoServer to have the new servers
    return;
}

Je suppose quand une exception EndOfStreamException, que la commande a été réussie, que le serveur a arrêté/a démarré une reconfig.

Je voudrais mettre à jour le pilote pour avoir la nouvelle config pour s'assurer qu'il se reconnectera certainement à au moins l'un des serveurs, dans tous les cas où la modification de la config l'empêchera de se connecter avec sa chaîne de connexion d'origine.

Y'a-t-il une quelconque façon de réussir cela?

En guise de question supplémentaire, est-il possible d'utiliser C# pour déterminer la version actuelle de la configuration du jeu de réplicas?

Merci

0

1 Réponses

Je peux répondre à la partie 2 de votre question - vous pouvez interroger la base de données locale pour obtenir la configuration de jeu de réplicas actuelle:

MongoServer server = client.GetServer();
var local = server.GetDatabase("local"); 
var collection = local.GetCollection("system.replset");
var cfg = collection.FindOne(); 
Console.WriteLine(cfg["version"]);

J'imagine que si la chaîne de connexion d'origine n'est plus valide, vous devez créer un nouvel objet MongoClient avec une nouvelle chaîne de connexion.

[Plus tard] Vous pouvez également obtenir tout le reste sur le jeu de réplicas, y compris son statut, en exécutant la commande replSetGetStatus dans la base de données d'administration.

0
ajouté