Spec-Zone.ru › MySQL 8.4

20.6.1 Стек коммуникаций для управления безопасностью подключения

MySQL 8.4 Group Replication может защитить подключения к групповой коммуникации между членами одним из следующих способов:

  • Используя собственную реализацию протоколов безопасности, включая TLS/SSL и использование списка разрешенных подключений (allowlist) для входящих подключений Системы групповой коммуникации (GCS).

  • Используя собственные средства безопасности подключений MySQL Server вместо реализации Group Replication. Использование протокола MySQL означает, что стандартные методы аутентификации пользователя могут использоваться для предоставления (или отзыва) доступа к группе вместо списка разрешенных подключений (allowlist), и последняя функциональность протокола сервера всегда доступна в релизах.

Выбор делается путем установки системной переменной group_replication_communication_stack в значение XCOM для использования собственной реализации Group Replication (это значение по умолчанию) или в значение MYSQL для использования безопасности подключений MySQL Server.

Для использования стека коммуникаций MySQL в группе репликации требуется дополнительная настройка. Особенно важно убедиться, что все эти требования выполнены при переходе от стека коммуникаций XCom к стеку коммуникаций MySQL для вашей группы.

Требования Group Replication для стека коммуникаций MySQL

  • Сеть адрес, настроенный системной переменной group_replication_local_address для каждого члена группы, должен быть установлен на один из IP-адресов и портов, на которых слушает MySQL Server, как указано в системной переменной bind_address сервера. Комбинация IP-адреса и порта для каждого члена должна быть уникальной в группе. Рекомендуется, чтобы системная переменная group_replication_group_seeds для каждого члена группы содержала все локальные адреса всех членов группы.

  • Стек коммуникаций MySQL поддерживает пространства имен сети, чего не поддерживает стек коммуникаций XCom. Если используются пространства имен сети с локальными адресами Group Replication для членов группы (group_replication_local_address), их необходимо настроить для каждого члена группы с помощью оператора CHANGE REPLICATION SOURCE TO. Кроме того, системная переменная сервера report_host для каждого члена группы должна быть настроена на отчёт о пространстве имён. Все члены группы должны использовать одно и то же пространство имён, чтобы избежать возможных проблем с разрешением адресов во время распределённого восстановления.

  • Системная переменная group_replication_ssl_mode должна быть установлена на требуемое значение для групповых коммуникаций. Эта переменная управляет включением или отключением TLS/SSL для групповых коммуникаций. При использовании стека коммуникаций MySQL конфигурация TLS/SSL берётся из настроек распределённого восстановления Group Replication. Это значение должно быть одинаковым на всех членах группы, чтобы избежать возможных конфликтов.

  • Значение системной переменной сервера require_secure_transport должно быть одинаковым на всех членах группы, чтобы избежать возможных конфликтов. Если group_replication_ssl_mode установлено на REQUIRED, VERIFY_IDENTITY или VERIFY_CA, используйте require_secure_transport=ON. Если group_replication_ssl_mode установлено на DISABLED, используйте require_secure_transport=OFF.

  • Если для групповых коммуникаций включен TLS/SSL, настройки Group Replication для защиты распределённого восстановления должны быть настроены, если они ещё не настроены, или проверены, если уже настроены. Стек коммуникаций MySQL использует эти настройки не только для подключений распределённого восстановления между членами, но и для конфигурации TLS/SSL в целом для групповых коммуникаций. group_replication_recovery_use_ssl и другие group_replication_recovery_* системные переменные описаны в разделе 20.6.3.2, «Подключения Secure Socket Layer (SSL) для распределенного восстановления».

  • Список разрешенных подключений (allowlist) Group Replication не используется, когда группа использует стек коммуникаций MySQL, поэтому системная переменная group_replication_ip_allowlist игнорируется и не должна устанавливаться.

  • Учетная запись пользователя репликации, которую Group Replication использует для распределённого восстановления, настроенная с помощью оператора CHANGE REPLICATION SOURCE TO, используется для аутентификации стеком коммуникаций MySQL при настройке подключений Group Replication. Этому пользователю, который должен быть одинаковым на всех членах группы, должны быть предоставлены следующие привилегии:

    • GROUP_REPLICATION_STREAM. Данная привилегия необходима для того, чтобы учетная запись пользователя могла создавать подключения для Group Replication, используя стек коммуникаций MySQL.

    • CONNECTION_ADMIN. Данная привилегия нужна для того, чтобы подключения Group Replication не прерывались, если один из вовлеченных серверов переведён в автономный режим. Если стек коммуникаций MySQL используется без этой привилегии, член, переведённый в автономный режим, будет исключён из группы.

    Кроме привилегий REPLICATION SLAVE и BACKUP_ADMIN, которые должны быть у всех учетных записей пользователей репликации (см. раздел 20.2.1.3, «Данные учетной записи пользователя для распределенного восстановления»). При добавлении новых привилегий убедитесь, что на каждом члене группы вы отключили двоичное протоколирование с помощью SET SQL_LOG_BIN=0 перед операторами GRANT и SET SQL_LOG_BIN=1 после них, чтобы локальная транзакция не мешала перезапуску Group Replication.

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

Это означает, что хотя значение системной переменной можно изменить во время работы Group Replication, и оно вступит в силу после перезапуска Group Replication на члене группы, член всё равно не сможет присоединиться к группе до тех пор, пока значение не будет изменено на всех членах. Поэтому необходимо остановить Group Replication на всех членах и изменить значение системной переменной на всех членах перед перезапуском группы. Поскольку все члены остановлены, для вступления изменения значения в силу требуется полная перезагрузка группы (bootstrap сервером с group_replication_bootstrap_group=ON). Другие необходимые изменения в настройках членов группы можно внести, когда они остановлены.

Для работающей группы выполните следующие действия, чтобы изменить значение group_replication_communication_stack и другие необходимые настройки для миграции группы со стека коммуникаций XCom на стек коммуникаций MySQL или со стека коммуникаций MySQL на стек коммуникаций XCom:

  1. Остановить репликацию группы на каждом из участников группы, используя оператор STOP GROUP_REPLICATION. Последним останавливайте первичный участник, чтобы не инициировать новые выборы первичного сервера и не ждать их завершения.

  2. На каждом из участников группы установите системную переменную group_replication_communication_stack на новый стековый протокол связи, MYSQL или XCOM, в зависимости от ситуации. Это можно сделать, отредактировав конфигурационный файл MySQL Server (обычно, my.cnf в системах Linux и Unix, или my.ini в системах Windows), или используя оператор SET. Например:

    SET PERSIST group_replication_communication_stack="MYSQL";
    
  3. Если вы мигрируете группу репликации со стека связи XCom (по умолчанию) на стек связи MySQL, на каждом из участников группы настройте или перенастройте необходимые системные переменные на соответствующие значения, как описано в списке выше. Например, системная переменная group_replication_local_address должна быть установлена на один из IP-адресов и портов, на которых MySQL Server прослушивает подключения. Также настройте любые сетевые пространства, используя оператор CHANGE REPLICATION SOURCE TO.

  4. Если вы мигрируете группу репликации со стека связи XCom (по умолчанию) на стек связи MySQL, на каждом из участников группы выполните операторы GRANT, чтобы предоставить учетной записи пользователя репликации привилегии GROUP_REPLICATION_STREAM и CONNECTION_ADMIN. Вам нужно будет снять состояние только чтения с участников группы, которое применяется при остановке Group Replication. Также убедитесь, что вы отключили двоичное протоколирование на каждом участнике группы, выполнив SET SQL_LOG_BIN=0 перед выполнением операторов GRANT, и SET SQL_LOG_BIN=1 после них, чтобы локальная транзакция не помешала перезапуску Group Replication. Например:

    SET GLOBAL SUPER_READ_ONLY=OFF;
    SET SQL_LOG_BIN=0;
    GRANT GROUP_REPLICATION_STREAM ON *.* TO rpl_user@'%';
    GRANT CONNECTION_ADMIN ON *.* TO rpl_user@'%';
    SET SQL_LOG_BIN=1;
    
  5. Если вы мигрируете группу репликации со стека связи MySQL обратно на стек связи XCom, на каждом из участников группы перенастройте системные переменные в соответствии со списком выше, используя настройки, подходящие для стека связи XCom. Раздел 20.9, «Переменные Group Replication» содержит список системных переменных с их значениями по умолчанию и требованиями для стека связи XCom.

    Примечание
    • Стек связи XCom не поддерживает сетевые пространства, поэтому системная переменная Group Replication локального адреса (group_replication_local_address) не может использовать их. Отключите их, выполнив оператор CHANGE REPLICATION SOURCE TO.

    • При переходе обратно к стеку связи XCom настройки, заданные переменными group_replication_recovery_use_ssl и другими group_replication_recovery_* системными переменными, не используются для обеспечения безопасности групповой связи. Вместо этого, используется системная переменная Group Replication group_replication_ssl_mode для активации использования SSL для групповых соединений и указания режима безопасности для соединений, а остальная конфигурация берется из конфигурации SSL сервера. Подробнее см. Раздел 20.6.2, «Защита групповых соединений с помощью Secure Socket Layer (SSL)».

  6. Для перезапуска группы выполните процедуру, описанную в Разделе 20.5.2, «Перезапуск группы», которая объясняет, как безопасно запустить группу, где были выполнены и сертифицированы транзакции. Для изменения стека связи необходимо выполнить запуск инициализации сервером с group_replication_bootstrap_group=ON, так как требуется остановка всех участников группы.

  7. Участники теперь подключаются друг к другу с использованием нового стека связи. Любой сервер, у которого системная переменная group_replication_communication_stack (или значение по умолчанию, в случае XCom) установлена на предыдущий стек связи, больше не может присоединиться к группе. Важно отметить, что, поскольку Group Replication не может даже увидеть попытку присоединения, она не проверяет и не отклоняет присоединяющегося участника с сообщением об ошибке. Вместо этого, попытка присоединения терпит неудачу без явного сообщения об ошибке, когда предыдущий стек связи прекращает попытку связаться с новым.

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

Spec-Zone.ru

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