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

Master-Master

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

Master-Master (Multi-Master) репликация — конфигурация базы данных, при которой два или более узла принимают запросы на запись одновременно. В отличие от Master-Slave, каждый узел является и источником, и получателем изменений.

Master-Master (мультимастер) репликация — схема репликации базы данных, при которой несколько узлов принимают запросы на чтение и запись одновременно. Каждый узел реплицирует свои изменения на другие и получает изменения от них. Это отличает схему от классической Master-Slave (Primary-Replica), где запись принимает только один узел.

Как работает

При записи на узел A изменения передаются на узел B через бинарный лог (binlog в MySQL). Узел B применяет эти изменения. При одновременной записи на оба узла возникает конфликт — два узла изменили одну и ту же строку. Разрешение конфликтов — главная сложность Master-Master: «побеждает последняя запись» (Last Write Wins), разрешение на уровне приложения или специальные алгоритмы CRDT.

В MySQL/MariaDB Master-Master настраивается через circular replication: оба сервера настроены как slave друг для друга. Для избежания конфликтов используют разные диапазоны auto_increment: auto_increment_offset=1 на первом, auto_increment_offset=2 на втором, auto_increment_increment=2 на обоих.

Galera Cluster — более надёжная реализация мультимастера для MySQL/MariaDB: синхронная репликация с подтверждением от кворума. Запись подтверждается только после принятия всеми узлами — конфликты устраняются на уровне protcol certication.

История

Асинхронная Master-Master репликация в MySQL появилась с версии 4.0 (2003). Galera Cluster разработан Codership в 2007–2009 годах. Percona XtraDB Cluster (2012) — коммерчески поддерживаемая реализация Galera. MariaDB Galera Cluster доступен с MariaDB 10.1 (2015).

Связь с хостингом

Master-Master применяется в высокодоступных конфигурациях: два сервера баз данных для Active-Active без единой точки отказа. Для веб-хостинга и стандартных CMS (WordPress, 1С-Битрикс) проще и надёжнее Master-Slave с переключением через Keepalived или ProxySQL. Galera Cluster подходит для критических систем с требованием нулевого даунтайма при обслуживании узлов.

Репликация master-master

Два или более узла принимают записи одновременно и реплицируют изменения друг другу через бинарный лог. PostgreSQL: BDR (Bi-Directional Replication). MySQL/MariaDB: built-in. Конфликты записей разрешаются через timestamp, last-write-wins или ручные правила.

Риски и проблемы

Split-brain: оба узла недоступны друг другу, принимают конфликтующие записи. Auto-increment конфликты: разные серверы могут создать записи с одинаковым ID. Решение: разные auto_increment_offset (сервер 1: нечётные ID, сервер 2: чётные) или UUID вместо INT.

Применение в хостинге

Master-master применяют для географически распределённых систем с минимизацией задержек записи. Для большинства веб-приложений достаточен master-slave: запись на мастер, чтение с реплик. Master-master требует тщательного проектирования схемы данных.

GTID в MySQL Master-Master

GTID (Global Transaction Identifier) упрощает репликацию: каждая транзакция имеет глобально уникальный ID. При failover: GTID автоматически определяет, какие транзакции нужно применить на новом мастере. Включение: gtid_mode=ON, enforce-gtid-consistency=ON в my.cnf. Percona XtraDB Cluster — multi-master с синхронной репликацией.

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