У меня есть набор реплик MonogDB с двумя участниками и арбитром. Проблема в том, что когда основной узел выходит из строя, а монго выбирает новый основной узел, у меня происходит некоторая потеря данных. Я считаю, что это то, что я могу контролировать на уровне драйвера Java. Пожалуйста, помогите мне найти правильные настройки, чтобы у меня не было потери данных при аварийном переключении.
Отказ набора реплик драйвера Java MongoDB
Ответы (2)
Во время первичных выборов любые записи приведут к исключениям, и вам придется повторить эти записи или передать пользователю любые сообщения. Для повторных попыток нет встроенной логики, поэтому вам придется написать свои собственные обработчики повторных попыток.
Если вы хотите убедиться, что ваши операции записи подтверждаются только при получении первичным и хотя бы одним вторичным, используйте это. Это предотвратит потерю данных в случае, если ваш основной сервер выйдет из строя до синхронизации с вторичными серверами (конечно, это повлияет на производительность).
WriteResult result = collection.insert(..., WriteConcern. REPLICAS_SAFE);
Дополнительные сведения о проблеме записи см. в документах MongoDB.
Дополнительное примечание
Поскольку у вас есть только два члена в вашем наборе, все операции записи завершатся неудачно, так как после потери одного узла нет большинства. Чтобы этого не произошло, вам необходимо повысить статус вашего арбитра до полноправного члена.