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:
Остановить репликацию группы на каждом из участников группы, используя оператор
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, «Перезапуск группы», которая объясняет, как безопасно запустить группу, где были выполнены и сертифицированы транзакции. Для изменения стека связи необходимо выполнить запуск инициализации сервером с
group_replication_bootstrap_group=ON, так как требуется остановка всех участников группы.Участники теперь подключаются друг к другу с использованием нового стека связи. Любой сервер, у которого системная переменная
group_replication_communication_stack(или значение по умолчанию, в случае XCom) установлена на предыдущий стек связи, больше не может присоединиться к группе. Важно отметить, что, поскольку Group Replication не может даже увидеть попытку присоединения, она не проверяет и не отклоняет присоединяющегося участника с сообщением об ошибке. Вместо этого, попытка присоединения терпит неудачу без явного сообщения об ошибке, когда предыдущий стек связи прекращает попытку связаться с новым.
© 2025 Oracle
Licensed under the GPLv2 License.