组复制使用异步复制协议来实现
第 17.9.5 节,“分布式恢复”,在将组成员加入组之前同步组成员。分布式恢复过程依赖于一个名为复制通道的复制通道group_replication_recovery
,该通道用于将事务从捐赠者成员传输到加入该组的成员。因此,您需要设置具有正确权限的复制用户,以便 Group Replication 可以建立直接的成员到成员恢复复制通道。
启动 MySQL 服务器实例,然后将客户端连接到它。创建具有REPLICATION
SLAVE
权限的 MySQL 用户。这个过程可以在二进制日志中捕获,然后你可以依靠分布式恢复来复制用于创建用户的语句。或者,您可以禁用二进制日志记录SET
SQL_LOG_BIN=0;
,然后在每个成员上手动创建用户,例如,如果您想要避免将更改传播到其他服务器实例。如果您确实决定禁用二进制日志记录,请确保在配置用户后启用它。
在以下示例中,
显示rpl_user
了具有密码
的用户password
。配置服务器时,请使用合适的用户名和密码。
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
mysql> FLUSH PRIVILEGES;
如果禁用了二进制日志记录,请在使用创建用户后再次启用它SET SQL_LOG_BIN=1;
。
配置用户后,使用该
语句将服务器配置为在下次需要从另一个成员恢复其状态时CHANGE MASTER TO
使用复制通道的给定凭据
。group_replication_recovery
发出以下命令,将
rpl_user
和
替换password
为创建用户时使用的值。
mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' \\
FOR CHANNEL 'group_replication_recovery';
分布式恢复是加入组的服务器采取的第一步,并且与组成员没有相同的事务集。如果这些凭据没有为group_replication_recovery
复制通道正确设置并且rpl_user
如图所示,服务器将无法连接到捐赠者成员并运行分布式恢复过程以获得与其他组成员的同步,因此最终无法加入该组。请参阅第 17.9.5 节,“分布式恢复”。
同样,如果服务器无法通过服务器的正确识别其他成员,hostname
则恢复过程可能会失败。建议运行 MySQL 的操作系统
hostname
使用 DNS 或本地设置正确配置 unique 。这hostname
可以在表的
Member_host
列中
验证performance_schema.replication_group_members
。如果多个组成员外部化了
hostname
操作系统设置的默认值,则该成员有可能无法解析到正确的成员地址并且无法加入该组。在这种情况下,使用report_host
配置一个唯一hostname
的,由每个服务器外部化。