Spec-Zone.ru › MySQL 5.7

17.1.3.1 Членство в группе

В MySQL Group Replication набор серверов образует группу репликации. У группы есть имя, которое имеет вид UUID. Группа динамична, и серверы могут в любое время покидать (добровольно или нет) и присоединяться к ней. Группа автоматически корректирует себя при присоединении или уходе серверов.

Если сервер присоединяется к группе, он автоматически обновляется, получая недостающее состояние от существующего сервера. Если сервер покидает группу, например, был остановлен на техническое обслуживание, оставшиеся серверы замечают его уход и автоматически переконфигурируют группу.

У Group Replication есть служба членства в группе, которая определяет, какие серверы активны и участвуют в группе. Список активных серверов называется представлением. Каждый сервер в группе имеет согласованное представление о том, какие серверы являются активными участниками группы в данный момент времени.

Члены группы должны соглашаться не только о подтверждении транзакций, но и о текущем представлении. Если существующие члены соглашаются, что новый сервер должен стать частью группы, группа переконфигурируется для включения этого сервера, что приводит к изменению представления. Если сервер покидает группу, добровольно или нет, группа динамически перестраивает свою конфигурацию и запускает изменение представления.

В случае, когда член добровольно покидает группу, он сначала инициирует динамическую переконфигурацию группы, во время которой все члены должны согласовать новое представление без покидающего сервера. Однако, если член покидает группу по принуждению, например, из-за непредвиденной остановки или потери сетевого подключения, он не может инициировать переконфигурацию. В этой ситуации механизм обнаружения ошибок Group Replication после короткого периода времени распознаёт уход члена, и предлагается переконфигурация группы без вышедшего из строя члена. Как и в случае с добровольным уходом, переконфигурация требует согласия большинства серверов в группе. Однако, если группа не может достичь согласия, например, из-за того, что она разделилась таким образом, что нет большинства активных серверов, система не может динамически изменить конфигурацию и блокируется, чтобы предотвратить ситуацию с разделением мозга. Эта ситуация требует вмешательства администратора.

Член может выйти из строя на короткое время, а затем попытаться снова присоединиться к группе до того, как механизм обнаружения ошибок обнаружит его выход из строя и до того, как группа переконфигурируется для удаления члена. В этой ситуации присоединяющийся член забывает своё предыдущее состояние, но если другие члены отправляют ему сообщения, предназначенные для его состояния до сбоя, это может вызвать проблемы, включая возможную несогласованность данных. Если член в этой ситуации участвует в протоколе консенсуса XCom, это может потенциально привести к тому, что XCom передаст разные значения для одного и того же раунда консенсуса, приняв другое решение до и после сбоя.

Чтобы противодействовать этой возможности, начиная с MySQL 5.7.22, серверам присваивается уникальный идентификатор при присоединении к группе. Это позволяет Group Replication осознавать ситуацию, когда новая инкарнация того же сервера (с тем же адресом, но новым идентификатором) пытается присоединиться к группе, в то время как его старая инкарнация всё ещё указана как член. Новая инкарнация блокируется до тех пор, пока старая инкарнация не будет удалена при переконфигурации. Если Group Replication остановлена и перезапущена на сервере, член становится новой инкарнацией и не может присоединиться, пока время ожидания подозрения не истечёт.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/group-replication-group-membership.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API