Мне пришлось заменить сервер конфигурации mongodb в кластере, который содержит только 1 осколок.
По ошибке я запустил новый сервер конфигурации без каких-либо данных и получил в журналах следующее сообщение:
[CheckConfigServers] ОШИБКА: не удалось проверить, что серверы конфигурации синхронизированы :: вызвано :: серверы конфигурации configserver1.mydomain.com:27019 и configserver2.mydomain.com:27019 отличаются
Следуя процедуре в 'http://docs.mongodb.org/manual/tutorial/replace-config-server/', Я пытался остановить балансир от монго. Но я получил сообщение об ошибке. Я мог остановить балансировщик только после перезапуска пустого конфигурационного сервера.
Я скопировал содержимое dbpath с configserver2 на configserver1, и все выглядит нормально.
Я хотел бы убедиться, что никакие данные не были потеряны или потеряны во время этих операций. Могут ли данные быть потеряны, если в кластере всего 1 осколок?
Спасибо,
Грег.
В CheckConfigServers
предупреждающее сообщение, которое вы получили при запуске, - это проверка работоспособности, чтобы предотвратить любые изменения метаданных (например, миграцию фрагментов в результате цикла балансировки), пока серверы конфигурации находятся в несогласованном состоянии.
Остановка сервера конфигурации с пустым dbpath и повторное копирование данных с заведомо исправного сервера конфигурации было правильным действием. MongoDB конфигурационные серверы являются не набор реплик и синхронизируются с помощью двухфазных фиксаций, координируемых серверами mongod / mongos в вашем сегментированном кластере.
Если у вас только один шард, данные не будут потеряны; ему некуда мигрировать.
Кроме того, если вы включили сегментирование, но не сегментировали никакие коллекции, все данные будут находиться на основном сегменте.
Я думаю, что у вас все в порядке с запуском printShardingStatus () команда.