Как называется процесс в репликации, когда Master умер и выбирается Slave

«Как называется процесс в репликации, когда Master умер и выбирается Slave» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Этот процесс называется failover. При отказе Master-узла один из Slave-узлов автоматически или вручную выбирается в качестве нового Master.

В Go можно реализовать простой мониторинг и переключение с помощью health-check:

func promoteSlaveToMaster(slaves []*Slave) (*Slave, error) {
    for _, slave := range slaves {
        if slave.IsHealthy() {
            slave.PromoteToMaster()
            return slave, nil
        }
    }
    return nil, errors.New("no healthy slaves available")
}

Ключевые моменты:

  1. Обычно используется алгоритм консенсуса (Raft, Paxos)
  2. Может быть автоматическим или ручным
  3. Важно избегать split-brain (когда два узла считают себя Master)