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:
Остановить репликацию группы на каждом из её участников, используя оператор
STOP GROUP_REPLICATION. Последним останавливайте первичный член, чтобы не инициировать новые выборы первичного сервера и не ждать завершения этого процесса.-
На каждом из участников группы установите системную переменную
group_replication_communication_stackна новый стек коммуникаций,MYSQLилиXCOM, соответственно. Это можно сделать, отредактировав файл конфигурации MySQL Server (обычно, он называетсяmy.cnfв системах Linux и Unix, илиmy.iniв системах Windows), или используя операторSET. Например:SET PERSIST group_replication_communication_stack="MYSQL";
Если вы мигрируете группу репликации из стека коммуникаций XCom (по умолчанию) в стек MySQL, на каждом из участников группы настройте или перенастройте необходимые системные переменные на соответствующие значения, как описано выше. Например, системная переменная
group_replication_local_addressдолжна быть установлена на один из IP-адресов и портов, на которых MySQL Server прослушивает соединения. Также настройте все необходимые сетевые пространства с помощью оператораCHANGE REPLICATION SOURCE TO.-
Если вы мигрируете группу репликации из стека коммуникаций 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;
-
Если вы мигрируете группу репликации из стека коммуникаций 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 Replicationgroup_replication_ssl_modeдля активации использования SSL для соединений между серверами группы и указания режима безопасности для соединений, а остальная часть конфигурации берётся из конфигурации SSL сервера. Подробности см. в Разделе 20.6.2, «Защита соединений между серверами группы с помощью Secure Socket Layer (SSL)».
Для перезапуска группы, следуйте процедуре из Раздела 20.5.2, «Перезапуск группы», которая описывает, как безопасно запустить группу, в которой были выполнены и подтверждены транзакции. Необходим запуск (bootstrap) сервером с
group_replication_bootstrap_group=ON, так как для изменения стека коммуникаций необходимо выключить все члены группы.Члены теперь подключаются друг к другу, используя новый стек коммуникаций. Любой сервер, у которого
group_replication_communication_stackустановлено (или имеет значение по умолчанию, в случае XCom) на предыдущий стек коммуникаций, больше не может присоединиться к группе. Важно отметить, что, поскольку Group Replication не может даже увидеть попытку присоединения, она не проверяет и не отклоняет присоединяющегося члена с сообщением об ошибке. Вместо этого, попытка присоединения завершается молча, когда предыдущий стек коммуникаций прекращает попытки связаться с новым.
© 2025 Oracle
Licensed under the GPLv2 License.