20.2.1.3 分布式恢复的用户凭据
Group Replication 使用分布式恢复过程来同步组成员连接到组时。分布式恢复涉及将捐赠者二进制日志中的事务传输到加入的成员使用名为group_replication_recovery
的复制渠道。你需要设置正确的权限,以便 Group Replication 可以建立直接成员之间的复制渠道。如果组成员已经设置了远程克隆操作作为分布式恢复的一部分,这个复制用户在捐赠者上也将被用作克隆用户,并且需要为这个角色拥有正确的权限。关于分布式恢复的完整描述,请见第20.5.4节,“分布式恢复”。
在每个组成员上都需要使用相同的复制用户。创建分布式恢复复制用户的过程可以捕获到二进制日志中,然后你可以依靠分布式恢复来复制用于创建用户的语句。或者,你可以在创建复制用户之前禁用二进制日志,然后手动在每个成员上创建用户,例如如果你想避免更改被传播到其他服务器实例。如果你这样做,请确保重新启用二进制日志,以便配置完成后可以继续使用。
如果分布式恢复连接的组使用SSL,复制用户在每个服务器上必须被创建之前加入成员连接到捐赠服务器。要设置SSL用于分布式恢复连接和创建需要SSL的复制用户,请见第20.6.3节,“分布式恢复连接安全”
默认情况下,MySQL 8中的用户使用第8.4.1.2节,“缓存SHA-2插件身份验证”。如果分布式恢复连接的复制用户使用缓存SHA-2身份验证插件,并且您不使用SSL连接,RSA密钥对用于密码交换。您可以将复制用户的公共密钥复制到加入成员中,也可以配置捐赠服务器在请求时提供公共密钥。要了解如何实现,请见第20.6.3.1节,“分布式恢复安全用户凭证”
要创建分布式恢复的复制用户,请按照以下步骤操作:
-
启动MySQL服务器实例,然后连接客户端。
-
如果您想禁用二进制日志以便在每个实例上单独创建复制用户,请执行以下语句:
mysql> SET SQL_LOG_BIN=0;
-
创建具有以下权限的MySQL用户:
-
REPLICATION_SLAVE
,用于在捐赠服务器上建立分布式恢复连接以检索数据。 -
CONNECTION_ADMIN
,确保群组复制连接不会在其中一个服务器被置于离线模式时终止。 -
BACKUP_ADMIN
,如果复制组中的服务器设置了支持克隆(见第20.5.4.2节,“克隆用于分布式恢复”)。该权限是必要的,以便成员可以在分布式恢复中作为捐赠服务器。 -
GROUP_REPLICATION_STREAM
,如果MySQL通信栈用于复制组(见第20.6.1节,“通信栈用于连接安全管理”)。该权限是必要的,以便用户账户可以使用MySQL通信栈在群组复制中建立和维护连接。
在这个示例中,用户名为
rpl_user
,密码为password
。在配置服务器时,请使用合适的用户名和密码:mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'password'; mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%'; mysql> GRANT CONNECTION_ADMIN ON *.* TO rpl_user@'%'; mysql> GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%'; mysql> GRANT GROUP_REPLICATION_STREAM ON *.* TO rpl_user@'%'; mysql> FLUSH PRIVILEGES;
-
-
如果您禁用了二进制日志记录,尽快重新启用它,以便执行以下语句:
mysql> SET SQL_LOG_BIN=1;
-
创建复制用户后,您必须将用户凭证提供给服务器,以便用于分布式恢复。您可以通过使用
CHANGE REPLICATION SOURCE TO
语句将用户凭证设置为group_replication_recovery
渠道的凭证。或者,您可以在START GROUP_REPLICATION
语句中指定用户凭证用于分布式恢复。-
使用
CHANGE REPLICATION SOURCE TO
设置的用户凭证将在服务器上的复制元数据存储库中以明文形式存储。它们将在Group Replication启动时应用,包括自动启动,如果group_replication_start_on_boot
系统变量设置为ON
。 -
在
START GROUP_REPLICATION
中指定的用户凭证仅保存在内存中,并且在STOP GROUP_REPLICATION
语句或服务器关闭时被删除。您必须重新执行START GROUP_REPLICATION
语句以提供凭证,因此无法自动启动 Group Replication 使用这些凭证。这种方式指定用户凭证有助于保护 Group Replication 服务器免受未经授权的访问。
有关每种方法提供用户凭证的安全 implications 的更多信息,请见第20.6.3.1.3节,“安全地提供复制用户凭证”。如果您选择使用
CHANGE REPLICATION SOURCE TO
语句提供用户凭证,请在服务器实例上执行以下语句,替换rpl_user
和password
与创建用户时使用的值:mysql> CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', -> SOURCE_PASSWORD='password' -> FOR CHANNEL 'group_replication_recovery';
-