Поочерёдное обслуживание набора реплик (перезапуск, патч ОС, минорное обновление)
MongoDBReplica SetКоманда
// 1) Before starting: all members healthy, low lag, and an oplog window longer than the maintenance
rs.printSecondaryReplicationInfo()
// 2) Clean shutdown on the SECONDARY under maintenance (then OS/binary work, restart with the same config):
db.getSiblingDB("admin").shutdownServer({ timeoutSecs: 60 })
// 3) Wait until the member is SECONDARY and lag has closed, then move to the next secondary:
rs.status().members.map(m => ({ host: m.name, state: m.stateStr, health: m.health }))
// 4) When all secondaries are done, on the PRIMARY: hand over to a secondary that catches up within 30 s
rs.stepDown(120, 30)
// 5) The old primary is now a SECONDARY: apply steps 2 and 3 to itЧто делает
Задаёт порядок вывода участников в обслуживание по одному, сначала secondary и в конце primary, чтобы перезапуски, патчи ОС или обновления бинарников выполнялись без вывода набора из работы.
Когда использовать
При плановых обновлениях ОС/ядра, минорных обновлениях версии, изменении параметров mongod или обслуживании дисков/оборудования.
Внимание
Никогда не останавливайте больше одного участника за раз; в наборе из 3 участников потеря двух означает потерю большинства. После каждого участника убедитесь в состоянии SECONDARY и в том, что отставание устранено. stepDown вызывает кратковременный перерыв записи; убедитесь, что драйверы переподключаются с retryable writes. Если есть арбитр, обработайте его в той же последовательности.