Mongo: Как автоматически подключиться к вторичному в случае первичного сбоя

У меня есть копия трех экземпляров Mongod, один из которых является основным, а два других - второстепенными. Я подключил экземпляр mongo к первичному, а затем отключил первичный экземпляр mongod, имитируя сбой.

Как правило, как только я инициировал команду, mongo генерировал ошибку DBClientCursor::init ().

Мой вопрос заключается в том, что в случае такого сбоя, когда первичный сервер не может вернуться к обслуживанию, и, безусловно, будут выборы нового первичного сервера, есть ли способ заставить mongo автоматически искать и подключаться к новому первичному серверу? Реплика установлена?

2 ответа

Возможно, ваша проблема в том, что вы подключаетесь только к одному узлу, который является основным в то время. Что вам нужно сделать, это указать при подключении, что такое репликационный набор и каков адрес каждого доступного узла, чтобы ваш клиент мог переподключиться к другому узлу, если его основной резервный узел перепадет.

Документация по формату строки подключения Mongo URI объясняет это:

hostX: необязательно. Вы можете указать столько хостов, сколько необходимо. Вы могли бы указать несколько хостов, например, для соединений с наборами реплик.

Это дает этот пример:

ПРИМЕР
Чтобы описать соединение с набором реплик с именем test, со следующими хостами mongod:

db1.example.net на порт 27017 и
db2.example.net на порт 2500.
Вы бы использовали строку подключения, которая выглядит следующим образом:

MongoDB://db1.example.net,db2.example.net:2500/ replicaSet= тест

Возможно, вам также потребуется проверить документацию вашего драйвера, если для этого требуется особый способ указания набора реплик и списка узлов.

Это не было проблемой. Набор реплик был хорошо определен и настроен. Проблема была действительно странной, я думаю, это ошибка в терминале. Все, что я сделал, я закрыл терминал, открыл новый, и он работал как шарм

Другие вопросы по тегам