文档主页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  分布式恢复的用户凭据

20.2.1.3 分布式恢复的用户凭据

组复制使用分布式恢复过程在组成员加入组时同步它们。分布式恢复涉及使用名为 group_replication_recovery 的复制通道将事务从捐赠者的二进制日志传输到加入成员。因此,您必须设置具有正确权限的复制用户,以便组复制可以建立直接的成员到成员复制通道。如果组成员已设置为支持将远程克隆操作用作分布式恢复的一部分,则此复制用户也将用作捐赠者上的克隆用户,并且需要此角色的正确权限。有关分布式恢复的完整说明,请参阅第 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 节,“用于分布式恢复的安全用户凭据”

要为分布式恢复创建复制用户,请按照以下步骤操作

  1. 启动 MySQL 服务器实例,然后将客户端连接到它。

  2. 如果要禁用二进制日志记录以便在每个实例上单独创建复制用户,请通过发出以下语句来执行此操作

    mysql> SET SQL_LOG_BIN=0;
  3. 使用以下权限创建 MySQL 用户

    在此示例中,显示了密码为 password 的用户 rpl_user。在配置服务器时,请使用合适的用户名和密码

    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;
  4. 如果您禁用了二进制日志记录,请在创建用户后立即通过发出以下语句重新启用它

    mysql> SET SQL_LOG_BIN=1;
  5. 创建复制用户后,您必须向服务器提供用户凭据以用于分布式恢复。您可以通过使用 CHANGE REPLICATION SOURCE TO 语句将用户凭据设置为 group_replication_recovery 通道的凭据来完成此操作。或者,您可以在 START GROUP_REPLICATION 语句中指定用于分布式恢复的用户凭据。

    • 使用 CHANGE REPLICATION SOURCE TO 设置的用户凭据以纯文本形式存储在服务器上的复制元数据存储库中。每当启动组复制时都会应用它们,包括如果 group_replication_start_on_boot 系统变量设置为 ON 时的自动启动。

    • START GROUP_REPLICATION 中指定的的用户凭证仅保存在内存中,并且可以通过 STOP GROUP_REPLICATION 语句或服务器关闭来移除。您必须再次发出 START GROUP_REPLICATION 语句以提供凭证,因此您无法使用这些凭证自动启动组复制。这种指定用户凭证的方法有助于保护组复制服务器免遭未经授权的访问。

    有关每种提供用户凭证的方法的安全含义的更多信息,请参阅 第 20.6.3.1.3 节 “安全地提供复制用户凭证”。如果您选择使用 CHANGE REPLICATION SOURCE TO 语句提供用户凭证,请立即在服务器实例上发出以下语句,并将 rpl_userpassword 替换为创建用户时使用的值

    mysql> CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', 
        ->   SOURCE_PASSWORD='password'
        ->   FOR CHANNEL 'group_replication_recovery';