Чистое завершение работы кластера MongoDB - PullRequest
3 голосов
/ 02 декабря 2010

В настоящее время у меня есть установка mongoDB с сервером mongos, сервером конфигурации и 2 осколками по 3 сервера mongod (master-slave) каждый.Я хотел бы убедиться, что когда я их выключаю, они выключаются чисто, чтобы не потерять какие-либо данные, находящиеся в очереди, или когда сервер определяет шард для записи и т. Д.

Что такое текущийлучший метод для отключения кластера серверов MongoDB?

В каком порядке лучше всего закрывать вещи, запускать fsync, блокировки записи и т. Д.

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

1 Ответ

3 голосов
/ 02 декабря 2010

Эти лучшие практики все еще действительно проясняются.

С вашей настройкой, вот как я бы сделал обслуживание сервера.

Резервные

Найти неосновную в каждом наборе реплик. Выполните fsync & lock . Копировать, смолить, сделать резервную копию. Разблокировать БД.

Вы должны быть в состоянии сделать это успешно на наборе реплик. Если вы действительно беспокоитесь, вы можете выполнить команду fsync & lock, а затем завершить работу.

сжатия

Возможно, вы захотите сжать данные в какой-то момент. Самый простой способ сделать это - снова выполнить fsync & lock, а затем выполнить db.repairDatabase (). Команда восстановления в основном сделает «дефрагментацию / сжатие» для вас. Как и выше, это также может быть связано с отключением.

Код нажимает

В идеале, очень мало того, что должно быть согласовано с отправкой кода. В худшем случае вам нужно будет управлять созданием / удалением индекса. Но этим действительно нужно управлять отдельно, так как вы не хотите, чтобы разработчики просто произвольно добавляли индексы в производственную БД.

Мониторинг

Это более сложная тема, но вы, вероятно, захотите посмотреть на такие вещи, как «кто хозяин», «какая пропускная способность записи на каждом узле», «сколько оперативной памяти я использую», «сколько данных смещается между узлами ". Есть ограниченные инструменты для этого прямо сейчас, так что ждите, чтобы сделать свой собственный.

...