Кластерный фрагмент MongoDB без первичного и только с одним активным вторичным
В моем сегментированном кластере MongoDB есть 3 сегмента, каждый из которых работает на 3 репликах. Обобщить:
Config Server:
shardcfg1.server.com:27018
shardcfg2.server.com:27018
shardcfg3.server.com:27018
Shard1:
shard11.server.com:27000 (P)
shard12.server.com:27000 (S)
shard13.server.com:27000 (S)
Shard2:
shard21.server.com:27000 (S)
shard22.server.com:27000 (STARTUP)
shard23.server.com:27000 (Unhealthy - invalidReplicaSetConfig: Our replica set configuration is invalid or does not include us)
Shard3:
shard31.server.com:27000 (S)
shard32.server.com:27000 (P)
shard33.server.com:27000 (S)
Если вы видите состояние выше, проблема заключается в SHARD2
.
- Нет начальной школы в
SHARD2
- Как помечен конфиг набора реплик
shard23.server.com
как не член
Вторичный shard21.server.com
может использоваться для получения дампа, поэтому потенциально нет потери данных. Однако я совершенно не знаю, как мне снова стабилизировать кластер?
Как мне удалить SHARD2
полностью из кластера? Или как мне повторно инициализировать осколок с теми же серверами?
1 ответ
Одна маленькая деталь, которую я упустил, которая, в свою очередь, стала ключевой для решения: кластер управлялся Mongo-MMS!
Решение:
Итак, у меня был один вторичный сервер, другой сервер в режиме ЗАПУСКА и третий, который смехотворно объявил себя не частью набора реплик! Весь кластер управляется MMS. Я выключил все три сервера. Теперь я просто запустил вторичный сервер, доступный в автономном режиме, чтобы получить резервную копию всей базы данных.
В течение этого периода я удалил этот осколок из своего кластера, слив застрял, потому что в осколке не было первичного. Однако произошла странная вещь, и агент автоматизации с этих серверов был удален. После завершения резервного копирования я началmongod
сервера, который был вторичным и имел данные о нем. К сожалению, терминал показал ВТОРИЧНЫЙ, однако, когда я проверил rs.status(), он показал три сервера, я вспомнил, как отключил один из мошеннических серверов. Именно тогда меня осенило, что MMS управляет конфигурацией этого набора реплик.
Я быстро перенастроил флаг force на true после удаления мошеннического сервера. Итак, теперь у меня есть два сервера, один в дополнительном, а другой в режиме запуска. Через несколько секунд после перенастройки! Вуаля! Вторичный превратился в первичный.
Долгая борьба, но рад сказать, что никогда не приходилось восстанавливать резервную копию или переделывать весь шард!