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

Мне пришлось заменить сервер конфигурации mongodb в кластере, который содержит только 1 шард.

По ошибке я запустил новый сервер конфигурации без каких-либо данных и получил следующее сообщение в журналах:

[CheckConfigServers] ОШИБКА: не удалось проверить, что серверы конфигурации синхронизированы:: вызваны:: config серверы configserver1.mydomain.com:27019 и configserver2.mydomain.com:27019 отличаются

Следуя процедуре на http://docs.mongodb.org/manual/tutorial/replace-config-server/, я попытался остановить балансировщик от монго. Но я получил сообщение об ошибке. Я мог остановить балансировщик только после перезапуска пустого сервера конфигурации.

Я скопировал содержимое dbpath из configserver2 в configserver1, и все выглядит хорошо.

Я хотел бы убедиться, что никакие данные не были потеряны или потеряны во время этих операций. Могут ли данные быть неуместными, если в кластере всего 1 осколок?

Спасибо,

Грег.

2 ответа

Решение

CheckConfigServers Предупреждающее сообщение, полученное вами при запуске, является проверкой работоспособности, чтобы предотвратить любые изменения метаданных (например, миграцию чанка в результате раунда балансировки), когда серверы конфигурации находятся в несовместимом состоянии.

Остановка сервера конфигурации с пустым dbpath и повторное копирование данных с известного хорошего сервера конфигурации было правильным действием. Конфигурационные серверы MongoDB не являются набором реплик и синхронизируются посредством двухфазных фиксаций, координируемых серверами mongod/mongos в вашем изолированном кластере.

Если у вас есть только один осколок, данные не будут потеряны; некуда его перенести.

Кроме того, если вы включили сегментирование, но не удалили какие-либо коллекции, все данные будут храниться в основном фрагменте.

Я думаю, что у вас должно быть все в порядке с командой printShardingStatus().

Другие вопросы по тегам