
У меня есть кластер mongoDB с 4 различными наборами реплик. Недавно 2 машины вышли из строя невосстановимым образом, данные на них полностью утеряны. К сожалению, на этих 2 хостах был установлен 1 набор реплик.
Проблема, с которой я столкнулся, заключается в том, что конфигурация по-прежнему указывает на то, что некоторые данные находятся на хостах этого набора реплик, и когда клиентское приложение пытается прочитать данные из этой коллекции, в которой есть фрагменты на этой машине, оно возвращает эту ошибку:
Не удалось найти хост, соответствующий настройке чтения { mode: "primary" } для set replicaSetShardServer4
Что имеет смысл, поскольку эти два сервера исчезли.
Поэтому я хотел найти способ удалить эти сервера из конфигурации, но каждая процедура, которую я ищу, упоминает подключение к основному узлу набора реплик и удаление шардов, чего я не могу сделать, поскольку эти хосты снова исчезают.
решение1
Измените файл конфигурации и строки комментариев.
replication:
replSetName: ...
Перезапустите службу Mongo. Подключитесь к узлу и сбросьте local
базу данных.
db.getSiblingDB('local').dropDatabase()
Этим вы возвращаете ReplicaSet обратно в Stand-alone MongoDB. После этого вы можете снова настроить ReplicaSet, см.:Преобразовать автономный mongod в набор реплик
Посмотрите такжеВосстановление набора реплик из резервных копий MongoDB, процедура та же самая, что и в вашем случае, за исключением первого шага «Получить резервные копии файлов базы данных MongoDB» — этот шаг, конечно, не нужен.