Master-master vs master-slave архитектура базы данных?
Я слышал о двух видах архитектур баз данных.
мастер-мастер
ведущий-ведомый
Разве мастер-мастер больше не подходит для сегодняшней сети, потому что это похоже на Git, у каждого юнита есть весь набор данных, и если он выходит из строя, это не имеет большого значения.
Ведущий-раб напоминает мне о SVN (который мне не нравится), где у вас есть один центральный блок, который обрабатывает вещи.
Вопросы:
Каковы плюсы и минусы каждого?
Если вы хотите иметь в своем мобильном телефоне локальную базу данных, такую как iPhone, какая из них больше подходит?
Является ли выбор одного из них критическим фактором для тщательного рассмотрения?
2 ответа
Мы торгуем по доступности, согласованности и сложности. Сначала ответим на последний вопрос: имеет ли это значение? Да очень! Выбор относительно того, как управлять вашими данными, является абсолютно фундаментальным, и нет "наилучшей практики", которая бы избегала решений. Вы должны понимать ваши конкретные требования.
Есть фундаментальное напряжение:
Один экземпляр: последовательность проста, но если случается, что все не работают, все находятся вне воды, а если люди находятся далеко, то могут оплатить ужасные расходы на связь. Принесите переносные устройства, которые, возможно, должны работать автономно, в изображение, и одна копия не будет разрезать его.
Ведущий Ведомый: непротиворечивость не слишком сложна, потому что у каждой части данных есть только один владелец. Но что делать, если вы не видите этого мастера, нужна какая-то отложенная работа.
Мастер-Мастер: хорошо, если вы можете заставить его работать, то, кажется, он предлагает все, без единой точки отказа, каждый может работать все время. Проблема в том, что очень трудно сохранить абсолютную последовательность. Смотрите статью в Википедии для получения дополнительной информации.
В Википедии, похоже, есть краткое изложение преимуществ и недостатков.
преимущества
Если один мастер выйдет из строя, другие мастера продолжат обновлять базу данных.
Мастера могут быть расположены в нескольких физических местах, т.е. распределены по сети.
Недостатки
Большинство систем репликации с несколькими хозяевами только слабо согласованы, то есть ленивы и асинхронны, нарушая свойства ACID.
Системы активной репликации являются сложными и вводят некоторую задержку связи.
Такие проблемы, как разрешение конфликтов, могут стать неразрешимыми по мере увеличения числа задействованных узлов и уменьшения требуемой задержки.
При исследовании различных архитектур баз данных. Я собрал много информации, которая может иметь отношение к кому-то еще, кто будет заниматься исследованиями в будущем. Я наткнулся
- Мастер-Ведомая Репликация
- Мастер-Мастер Репликация
- 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
- Смотрите известные ограничения
Вы можете посетить полный раздел моего блога, включая диаграммы архитектуры, в которых подробно рассматриваются три упомянутые архитектуры.