У меня есть набор реплик из трех узлов (1 первичный, 1 вторичный, 1 арбитр) на трех различных экземплярах сервера Amazon. Серверы, на которых они размещаются, требуют обновления памяти, поэтому мне нужно было также закрыть экземпляры MongoDB.
Я закрыл экземпляры MongoDB в этом порядке:
- Вторичный
- Арбитр
- Первичный
Я использовал процесс ниже для завершения работы каждого сервера
use admin
db.shutdownServer()
Все экземпляры MongoDB завершили работу должным образом без каких-либо проблем. Пока все в порядке.
После обновления сервера Amazon я запустил экземпляры MongoDB в следующем порядке:
- Арбитр
- Вторичный
- Первичный
Арбитр находится в режиме арбитра, а вторичный-во вторичном режиме, но, к моему удивлению, первичная машина перешла в режим «восстановления».
Я не знаю, почему основная машина пошла на «восстановление».
Я исследовал бревна. Он не показывает ни одного участника для синхронизации…что-то вроде этого
Мое основное сомнение: «первичный должен быть в первичном, пока не произойдет повторная сборка в наборе реплик».
Я пропускаю шаг во время выключения серверов? Или я пропускаю шаг во время перезапуска серверов?
Пожалуйста, пролей свет на это, чтобы я мог преодолеть эту проблему. Мне нужно часто закрывать серверы MongoDB, так как на серверах Amazon происходит много обновлений.
После того, как вы запустили набор реплик, вы «вторичный» стали «первичным», и вы «первичный», вероятно, были во вторичном состоянии через короткое время. Чтобы сохранить первичный статус в вашем «первичном», вы должны дать ему более высокий приоритет, чем у вашего «вторичного».
Проверьте с rs.команда conf ().
Проверьте здесь, как заставить узел быть основным