Архитектуры высокой доступности MMM, MHA и MGR имеют следующие общие черты:
- Мониторинг главного узла в кластере репликации ведущий-ведомый.
- Автоматическая миграция Мастера через VIP.
- Переконфигурировать другие рабы в кластере, чтобы синхронизировать новый мастер
MMM
Требуется два Мастера, и только один Мастер одновременно предоставляет внешние услуги, что можно назвать режимом «активный-резервный».
Необходимые основные ресурсы:
ресурс | количество | инструкция |
---|---|---|
основная БД | 2 | Первичная-основная репликация для активного-резервного режима |
из БД | 0~N единиц | N подчиненных серверов можно настроить по мере необходимости |
айпи адрес | 2n+1 | N - количество серверов MySQL |
следить за пользователями | 1 | Пользователь MySQL, который следит за состоянием базы данных (репликация) |
прокси-пользователь | 1 | Используется агентом MMM для изменения состояния read_only |
Шаги аварийного переключения:
- Операции на подчиненном сервере
- Завершите восстановление журнала, которое было реплицировано на исходном мастере.
- Настройте новый Master, используя команду member Master
- Работа на главном сервере
- отключить только чтение
- Перенести VIP на новый главный сервер
преимущество:
- Обеспечивает настройку VIP для чтения и записи, а тестовые запросы на чтение и запись могут обеспечить высокую доступность.
- Инструментарий относительно полный и не требует дополнительных скриптов разработки.
- Мониторинг высокой доступности кластера MySQL после завершения аварийного переключения
недостаток:
- Сбой простой и грубый, и легко потерять транзакции.Рекомендуется использовать полусинхронную репликацию, чтобы уменьшить вероятность сбоя.
- В настоящее время сообществу MMM не хватает обслуживания, и оно не поддерживает репликацию на основе GTID.
Применимая сцена:
- И чтение, и запись требуют высокой доступности
- Репликация на основе точки журнала
MHA
Требуются ресурсы:
ресурс | количество | инструкция |
---|---|---|
основная БД | 2 | Первичная-основная репликация для активного-резервного режима |
из БД | 2 ~ N комплектов | N подчиненных серверов можно настроить по мере необходимости |
айпи адрес | n+2 | N - количество серверов MySQL |
следить за пользователями | 1 | Пользователь MySQL, который следит за состоянием базы данных (репликация) |
скопировать пользователя | 1 | Пользователь, используемый для настройки репликации MySQL |
MHA использует мастер, выбранный из слейва, отказоустойчивость:
- С сервера:
- Подчиненный выбор с последним обновлением
- Попытка сохранить двоичные журналы с неработающего мастера
- Применение журналов дифференциального реле к другим ведомым устройствам
- Применить двоичный журнал, сохраненный от мастера
- Продвигать выборы раба к хозяину
- Настройте другие ведомые устройства для синхронизации с новым ведущим устройством.
преимущество:
- В дополнение к поддержке репликации точек журнала MHA также поддерживает метод GTID
- По сравнению с MMM, MHA попытается восстановить старый двоичный журнал со старого Мастера, но это может не каждый раз быть успешным. Если вам нужно меньше сценариев потери данных, рекомендуется использовать архитектуру MHA.
недостаток:
MHA необходимо разработать собственные сценарии VIP-трансферов.
MHA отслеживает только состояние Master и не отслеживает состояние Slave.
MGR
MGR — это подключаемый модуль репликации, основанный на существующей архитектуре MySQL, который может реализовать несколько мастеров для изменения данных и репликации с использованием протокола paxos, который отличается от кластера репликации с несколькими мастерами асинхронной репликации.
Он поддерживает Multi-Master Mode, но должностные лица рекомендуют один основной режим:
- В режиме с несколькими мастерами клиенты могут случайным образом записывать данные в узлы MySQL.
- В режиме с одним мастером кластер MGR выберет основной узел, который будет отвечать за запросы на запись, и как основной узел, так и другие узлы могут обрабатывать запросы на чтение.
// 查看MGR的组员
select * from performance_schema.replication_group_members;
// 查看MGR的状态
select * from performance_schema.replication_group_member_stats;
// 查看MGR的一些变量
show variables like 'group%';
// 查看服务器是否只读
show variables like 'read_only%';
преимущество:
- В основном без задержки, задержка намного меньше, чем асинхронная
- Поддержка режима множественной записи, но он еще не очень развит.
- Надежная согласованность данных гарантирует, что транзакции данных не будут потеряны.
недостаток:
- поддерживает только innodb
- Может использоваться только в режиме GTID, а формат журнала — формат строки.
Применимые бизнес-сценарии:
- Чувствителен к задержке ведущий-ведомый
- Я надеюсь обеспечить высокую доступность службы записи, но не хочу устанавливать стороннее программное обеспечение.
- Сценарии с высокой согласованностью данных
Большая проблема считывания и записи нагрузки
Нагрузка большая:
-
увеличить раб
-
Добавить средний уровень (MyCat, ProxySQL, Maxscale)
-
разделение чтения-записи
Что касается большой нагрузки на запись:
- Подбиблиотека и подтаблица
- Добавить средний слой
Наконец
Обратитесь к курсам МООК,s.imooc.com/S8KFBvs