# 18.2.1.3分布式恢复的用户凭据

组复制使用分布式恢复过程在将组成员加入组时同步组成员。分布式恢复涉及使用名为组_复制_恢复。因此,您必须设置具有正确权限的复制用户,以便组复制可以建立直接的成员到成员复制通道。如果已将组成员设置为支持将远程克隆操作作为分布式恢复的一部分使用(可从MySQL 8.0.17获得),则此复制用户也将用作供体上的克隆用户,并且需要此角色的正确权限。有关分布式恢复的完整描述,请参阅第18.5.4节,“分布式恢复”.

每个组成员上的分布式恢复必须使用相同的复制用户。可以在二进制日志中捕获为分布式恢复创建复制用户的过程,然后您可以依靠分布式恢复来复制用于创建用户的语句。或者,您可以在创建复制用户之前禁用二进制日志记录,然后在每个成员上手动创建用户,例如,如果您希望避免将更改传播到其他服务器实例。如果执行此操作,请确保在配置用户后重新启用二进制日志记录。

重要的

如果组的分布式恢复连接使用SSL,则必须在每台服务器上创建复制用户之前加入成员连接到捐赠者。有关为分布式恢复连接设置SSL并创建需要SSL的复制用户的说明,请参阅第18.6.3节,“保护分布式恢复连接”

重要的

默认情况下,在MySQL 8中创建的用户使用第6.4.1.2节,“缓存SHA-2可插拔身份验证”。如果用于分布式恢复的复制用户使用缓存SHA-2身份验证插件,并且使用SSL进行分布式恢复连接,RSA密钥对用于密码交换。您可以将复制用户的公钥复制到加入成员,也可以将捐赠者配置为在请求时提供公钥。有关执行此操作的说明,请参阅第18.6.3.1节,“分布式恢复的安全用户凭据”.

要创建用于分布式恢复的复制用户,请执行以下步骤:

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

  2. 如果要禁用二进制日志记录以便在每个实例上分别创建复制用户,请发出以下语句:

    mysql> SET SQL_LOG_BIN=0;
    
  3. 使用复制从机用于分布式恢复的权限,如果服务器设置为支持克隆,则备份管理在克隆操作中作为捐赠者使用的特权。在本例中,用户*rpl_用户用密码暗语*如图所示。配置服务器时,请使用合适的用户名和密码:

    mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
    mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
    mysql> GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
    mysql> FLUSH PRIVILEGES;
    
  4. 如果禁用了二进制日志记录,请在创建用户后立即再次启用,方法是发出以下语句:

    mysql> SET SQL_LOG_BIN=1;
    
  5. 创建复制用户后,必须向服务器提供用于分布式恢复的用户凭据。可以通过将用户凭据设置为组_复制_恢复频道,使用将复制源更改为语句(来自MySQL 8.0.23)或将主机更改为语句(MySQL 8.0.23之前)。或者,在MySQL 8.0.21中,您可以在服务器上指定分布式恢复的用户凭据启动组复制陈述

    mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' \\
    		      FOR CHANNEL 'group_replication_recovery';
    
    Or from MySQL 8.0.23:
    mysql> CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', SOURCE_PASSWORD='password' \\
    		      FOR CHANNEL 'group_replication_recovery';