组复制不支持在组中的所有成员关闭后自动重新启动组。当关闭和重新启动整个组时,需要选择一个服务器成员来引导组。您必须使用引导标志(group _ replication _ bootstrap _ group选项)来指示成员创建一个组并充当初始种子服务器。
要重新启动组复制,您应该找到最新的成员。最简单的方法是比较所有成员上执行的GTIDs。最新的成员应该有一个在其他成员上执行的超级GTIDs集,建单的理解就是GTID最大的那个。
mysql> SELECT @@global.gtid_executed;
+----------------------------------------------+
| @@global.gtid_executed |
+----------------------------------------------+
| 550fa9ee-a1f8-4b6d-9bfe-c03c12cd1c72:1-14048 |
+----------------------------------------------+
1 row in set (0.00 sec)
gtid_executed:这个是已经执行过的所有的事物的GTID的一个系列串。
gtid_purged:这个序列是指我们在binary log删除的事物的GTID的序列号。
要启动组复制,请指示最新的服务器成员引导该组,然后启动组复制。该引导只能由一台服务器完成,即启动组的服务器,并且只能启动一次。这就是引导配置选项的值未保存在配置文件中的原因。(组复制引导组选项的默认值为OFF。)如果它保存在配置文件中,服务器在重新启动时会自动引导第二个同名的组。引导两次将导致两个不同的组具有相同的名称。同样的道理也适用于这个选项设置为on的插件的停止和重启。
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
一旦START GROUP_REPLICATION语句返回,该组就已启动。引导组后,需要将组复制引导组选项设置为关闭。然后,为该组的其余成员启动组复制。