20.1 Обзор репликации групп
В этом разделе представлена справочная информация о репликации групп MySQL.
Наиболее распространённый способ создания отказоустойчивой системы заключается в дублировании компонентов, другими словами, компонент можно удалить, и система должна продолжать работать как ожидается. Это создаёт ряд проблем, которые повышают сложность таких систем на совершенно другой уровень. В частности, реплицированные базы данных должны учитывать необходимость обслуживания и администрирования нескольких серверов вместо одного. Кроме того, поскольку серверы сотрудничают для создания группы, необходимо решать и другие классические проблемы распределённых систем, такие как разделение сети или сценарии с «разделением мозга».
Таким образом, конечная задача состоит в объединении логики базы данных и репликации данных с логикой координации нескольких серверов простым и согласованным образом. Другими словами, необходимо, чтобы несколько серверов договорились о состоянии системы и данных при каждом изменении, происходящем в системе. Это можно сформулировать как достижение согласия серверами при каждом переходе состояния базы данных, чтобы все они функционировали как одна база данных или, альтернативно, чтобы они в конечном итоге пришли к одному и тому же состоянию. Это означает, что им необходимо работать как (распределённая) машина состояний.
MySQL Group Replication предоставляет репликацию распределённой машины состояний с сильной координацией между серверами. Серверы автоматически координируют свою работу, когда они являются частью одной группы. Группа может работать в режиме с одним первичным узлом с автоматическим выбором первичного узла, где только один сервер принимает обновления за раз. В качестве альтернативы для более продвинутых пользователей группа может быть развернута в режиме с несколькими первичными узлами, где все серверы могут принимать обновления, даже если они выполняются одновременно. Эта мощь связана с тем, что приложениям необходимо работать с ограничениями, накладываемыми такими развертываниями.
Существует встроенная служба членства в группе, которая поддерживает согласованное и доступное для всех серверов представление группы в любой момент времени. Серверы могут покидать и присоединяться к группе, и представление обновляется соответственно. Иногда серверы могут покидать группу неожиданно, в этом случае механизм обнаружения отказа обнаруживает это и уведомляет группу о том, что представление изменилось. Всё это происходит автоматически.
Для того, чтобы транзакция была подтверждена, большинство членов группы должны договориться о порядке данной транзакции в глобальной последовательности транзакций. Решение о подтверждении или отказе от транзакции принимается каждым сервером индивидуально, но все серверы принимают одно и то же решение. Если возникает разделение сети, приводящее к ситуации разделения, когда члены не могут достичь соглашения, то система не развивается до тех пор, пока эта проблема не будет решена. Таким образом, также существует встроенный, автоматический механизм защиты от «разделения мозга».
Всё это обеспечивается протоколами предоставленной системы групповой коммуникации (GCS). Они предоставляют механизм обнаружения сбоев, службу членства в группе и безопасную и полностью упорядоченную доставку сообщений. Все эти свойства являются ключевыми для создания системы, гарантирующей согласованную репликацию данных в группе серверов. В основе этой технологии лежит реализация алгоритма Paxos. Он действует как движок групповой коммуникации.
© 2025 Oracle
Licensed under the GPLv2 License.