Spec-Zone.ru › MySQL 9.2

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

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

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

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

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

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

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

  • Сеть адрес, настроенный переменной group_replication_local_address для каждого члена группы, должен быть установлен на один из IP-адресов и портов, на которых слушает MySQL-сервер, как указано в системной переменной 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_IDENTITY, используйте 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, «Перезапуск группы», которая описывает, как безопасно запустить группу, в которой были выполнены и подтверждены транзакции. Необходим запуск (bootstrap) сервером с 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-9.2-en/group-replication-connection-security.html

Spec-Zone.ru

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