首次启动组的过程被称为引导(bootstrapping)。您使用group_replication_bootstrap_group
系统变量来引导一个组。引导应该仅由单个服务器执行,即启动组的服务器,并且只能执行一次。这就是为什么group_replication_bootstrap_group
选项的值没有被存储在实例的选项文件中的原因。如果它被保存在选项文件中,服务器重启时会自动使用相同的名称引导第二个组。这会导致出现两个具有相同名称的不同组。同样的逻辑也适用于将此选项设置为ON
时停止和重启插件。因此,为了安全地引导组,您需要连接到s1并发出以下语句:
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION;
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
或者使用START GROUP_REPLICATION语句进行分布式恢复的时候提供用户凭证(从MySQL8.0.21开始才可以),执行如下语句:
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION USER='rpl_user', PASSWORD='password';
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;
一旦START GROUP_REPLICATION执行成功,组就会被启动,可以通过如下SQL进行查看
mysql> SELECT * FROM performance_schema.replication_group_members;
这些信息中有成员在组内的唯一标识符: ce9be252-2b71-11e6-b8f4-00212844f856,状态是ONLINE,并且s1是监听在3306端口。
为了证明服务器确实处于组中并且能够处理负载,请创建一个表并向其中添加一些内容:
mysql> CREATE DATABASE test;
mysql> USE test;
mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);
mysql> INSERT INTO t1 VALUES (1, 'Luis');
检查binlog中关于t1的内容:
mysql> SELECT * FROM t1;
mysql> SHOW BINLOG EVENTS;
官方文档中的内容此处省略了,粘贴过来格式有点乱。
如上所示,数据库和表对象已被创建,并且它们对应的DDL(数据定义语言)语句被写入到了二进制日志中。同时,数据也被插入到了表中并写入了二进制日志,因此可以通过从捐赠者(源库)的二进制日志中进行状态转移来用于分布式恢复。