На сколько мне известно, запись ведется только через Master, а чтение возможно и из Slave. Однако встаёт такой вопрос: Если я подключился к Slave и знаю только его адрес (о других Master и Slave я ничего не знаю) и пытаюсь записать данные, то клиент MongoDB переключит меня на Master???
MongoClientSettings settings = new MongoClientSettings();
settings.Credential = MongoCredential.CreateCredential("collection1", "user", "p@$$w0rd");
settings.Server = new MongoServerAddress("192.168.1.100"); // Тут находится Slave
settings.ReplicaSetName = "myReplica"; //Реплика БД (Master<->Slave)
// Подключились
var client = new MongoClient(settings);
// Взяли Коллекцию
var db = client.GetDatabase("collection1");
//Найдем документ id=100
var filter = Builders<CacheDocument>.Filter.Gt<long>("id", 100);
//получим документ
CacheDocument document = collection.Find(filter).Limit(1).FirstOrDefault();
Тут всё пройдет без запинки, однако, что произойдет, если мы будем писать данные
collection.InsertOne(new CacheDocument(/*something*/) { /*something*/ });
Переключит ли MongoDB на Master или выдаст ошибку?
Отвечу на свой же вопрос:
Да! Если жив Master или жив Arbiter и есть кому назначать Master.
Любой из Slave в курсе где живёт Master и пересылает запросы добавления к нему.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости