hostprofi.ru
Подобрать хостинг
Термин·буква M

MySQL Group Replication

краткое определение

MySQL Group Replication — встроенный механизм высокодоступной репликации MySQL, где несколько серверов образуют согласованную группу. Поддерживает single-primary и multi-primary режимы. Использует Paxos-алгоритм для консенсуса. Основа MySQL InnoDB Cluster.

MySQL Group Replication (MGR) — встроенный механизм репликации и высокой доступности MySQL, введённый в MySQL 5.7.17 (2016). В отличие от классической Master-Slave репликации, Group Replication использует протокол группового консенсуса (Paxos) для гарантии согласованности данных на всех узлах группы.

Как работает

Group Replication основана на концепции виртуальной синхронной репликации:

  1. Транзакция на primary-узле перед коммитом передаётся всем членам группы (broadcast).
  2. Каждый узел применяет транзакцию локально и голосует за её принятие.
  3. При достижении кворума (большинство узлов подтвердили) транзакция коммитируется.
  4. При конфликте двух транзакций (concurrent writes к одной строке на разных узлах) одна отклоняется с rollback.

Два режима работы:

  • Single-Primary Mode — только один узел принимает записи (primary), остальные — read-only secondary. При отказе primary автоматически выбирается новый через выборы. Рекомендуется для большинства случаев.
  • Multi-Primary Mode — все узлы принимают записи. Требует разрешения конфликтов (conflict detection). Подходит при горизонтальном масштабировании записи.

Минимальный состав группы — 3 узла (для кворума). Максимум — 9. Группа функционирует при отказе не более (N-1)/2 узлов: из 3 — один, из 5 — два.

MySQL InnoDB Cluster

MySQL InnoDB Cluster — более высокоуровневое решение HA, включающее Group Replication + MySQL Shell для управления + MySQL Router для прозрачного роутинга запросов. MySQL Router автоматически направляет write-запросы на primary и read-запросы на secondary.

История

Разработка MySQL Group Replication началась в Oracle MySQL Team около 2013 года. MySQL 5.7.17 (декабрь 2016) — первый GA-релиз с MGR. MySQL 8.0 (2018) принёс значительные улучшения: лучший conflict detection, поддержка большего числа узлов. Galera Cluster (2008) — альтернативная реализация synchronous replication для MySQL/MariaDB, появившаяся раньше и ставшая ориентиром для разработчиков MGR.

MGR vs Galera Cluster vs Master-Slave

ПараметрMGRGalera ClusterMaster-Slave
АлгоритмPaxosCertification-basedBinlog streaming
Запись1 или N узловВсе узлыТолько master
Задержка записиВыше (консенсус)ВышеМинимальная
Auto-failoverДаДаНет (требует MHA)

На что обращать внимание

Group Replication требует InnoDB — MyISAM-таблицы несовместимы. У каждой таблицы должен быть первичный ключ (PRIMARY KEY) — без него транзакции отклоняются группой. Multi-primary режим создаёт overhead на conflict detection: при высоком параллелизме записи производительность ниже single-primary. Сеть между узлами критична: latency выше 50–100 мс снижает throughput записи. ProxySQL или MySQL Router обязательны для прозрачного failover на уровне приложения — без роутера приложение нужно перенастраивать при смене primary.

Group Replication vs традиционная репликация

MySQL Group Replication (MGR) — встроенный в MySQL 5.7.17+ механизм multi-master репликации с автоматическим failover. В отличие от Master-Slave, MGR позволяет писать в любой узел кластера (multi-primary mode). Galera Cluster — альтернатива для MariaDB/Percona XtraDB Cluster. ProxySQL — балансировщик перед кластером: маршрутизирует READ на реплики, WRITE на primary. Требования к ресурсам MGR: минимум 3 узла, задержка между ними < 5 мс (для синхронного коммита). На VPS: 3 VPS в одном дата-центре — типичная конфигурация. ACID: MGR гарантирует consistent reads при правильной конфигурации.

Другие термины