Master-master vs master-slave архитектура базы данных?

Я слышал о двух видах архитектур баз данных.

  • мастер-мастер

  • ведущий-ведомый

Разве мастер-мастер больше не подходит для сегодняшней сети, потому что это похоже на Git, у каждого юнита есть весь набор данных, и если он выходит из строя, это не имеет большого значения.

Ведущий-раб напоминает мне о SVN (который мне не нравится), где у вас есть один центральный блок, который обрабатывает вещи.

Вопросы:

  1. Каковы плюсы и минусы каждого?

  2. Если вы хотите иметь в своем мобильном телефоне локальную базу данных, такую ​​как iPhone, какая из них больше подходит?

  3. Является ли выбор одного из них критическим фактором для тщательного рассмотрения?

2 ответа

Решение

Мы торгуем по доступности, согласованности и сложности. Сначала ответим на последний вопрос: имеет ли это значение? Да очень! Выбор относительно того, как управлять вашими данными, является абсолютно фундаментальным, и нет "наилучшей практики", которая бы избегала решений. Вы должны понимать ваши конкретные требования.

Есть фундаментальное напряжение:

Один экземпляр: последовательность проста, но если случается, что все не работают, все находятся вне воды, а если люди находятся далеко, то могут оплатить ужасные расходы на связь. Принесите переносные устройства, которые, возможно, должны работать автономно, в изображение, и одна копия не будет разрезать его.

Ведущий Ведомый: непротиворечивость не слишком сложна, потому что у каждой части данных есть только один владелец. Но что делать, если вы не видите этого мастера, нужна какая-то отложенная работа.

Мастер-Мастер: хорошо, если вы можете заставить его работать, то, кажется, он предлагает все, без единой точки отказа, каждый может работать все время. Проблема в том, что очень трудно сохранить абсолютную последовательность. Смотрите статью в Википедии для получения дополнительной информации.

В Википедии, похоже, есть краткое изложение преимуществ и недостатков.

преимущества

  • Если один мастер выйдет из строя, другие мастера продолжат обновлять базу данных.

  • Мастера могут быть расположены в нескольких физических местах, т.е. распределены по сети.

Недостатки

  • Большинство систем репликации с несколькими хозяевами только слабо согласованы, то есть ленивы и асинхронны, нарушая свойства ACID.

  • Системы активной репликации являются сложными и вводят некоторую задержку связи.

  • Такие проблемы, как разрешение конфликтов, могут стать неразрешимыми по мере увеличения числа задействованных узлов и уменьшения требуемой задержки.

При исследовании различных архитектур баз данных. Я собрал много информации, которая может иметь отношение к кому-то еще, кто будет заниматься исследованиями в будущем. Я наткнулся

  1. Мастер-Ведомая Репликация
  2. Мастер-Мастер Репликация
  3. MySQL Cluster

Я решил согласиться на использование MySQL Cluster для моего варианта использования. Однако, пожалуйста, см. Ниже для различных плюсов и минусов, которые я собрал

1. Мастер-Ведомая Репликация

Pros

  • Аналитические приложения могут читать с ведомого (ых) без влияния на мастер
  • Резервные копии всей базы данных относительно не влияют на мастера
  • Рабы могут быть переведены в автономный режим и синхронизированы с мастером без простоев

Cons

  • В случае неудачи раб должен быть назначен мастером, чтобы занять его место. Нет автоматического перехода на другой ресурс
  • Время простоя и, возможно, потеря данных при отказе мастера
  • Все записи также должны быть сделаны мастеру в дизайне мастер-раб
  • Каждое дополнительное ведомое устройство добавляет некоторую нагрузку на ведущее устройство, так как двоичный журнал должен быть прочитан, а данные скопированы на каждое подчиненное устройство.
  • Приложение может быть перезапущено

2. Мастер-Мастер Репликация

Pros

  • Приложения могут читать от обоих мастеров
  • Распределяет нагрузку записи по обоим основным узлам
  • Простое, автоматическое и быстрое аварийное переключение

Cons

  • Слабо последовательный
  • Не так просто, как master-slave для настройки и развертывания

3. MySQL Cluster

Новый ребенок в городе, основанный на дизайне кластера MySQL. Кластер MySQL был разработан с учетом высокой доступности и масштабируемости и является идеальным решением для использования в средах, не требующих простоев, высокой доступности и горизонтальной масштабируемости.

См. MySQL Cluster 101 для получения дополнительной информации

Pros

  • (Высокая доступность) Нет единой точки отказа
  • Очень высокая пропускная способность
  • 99,99% времени безотказной работы
  • Авто-Sharding
  • Оперативность в реальном времени
  • Операции онлайн (изменения схемы и т. Д.)
  • Распределенные записи

Cons

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

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