Назад | Перейти на главную страницу

Как проверить целостность метаданных mongodb?

Мне пришлось заменить сервер конфигурации 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 () команда.