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