MySQL 8.0.26 新增参数 group_replication_view_change_uuid
GreatSQL [root@localhost][test]> show global variables like 'group_replication_view_change_uuid';
+------------------------------------+-----------+
| Variable_name | Value |
+------------------------------------+-----------+
| group_replication_view_change_uuid | AUTOMATIC |
+------------------------------------+-----------+
1 row in set (0.00 sec)
GreatSQL [root@localhost][test]> SET GLOBAL group_replication_view_change_uuid = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa";
Query OK, 0 rows affected (0.01 sec)
GreatSQL [root@localhost][test]> show global variables like 'group_replication_view_change_uuid';
+------------------------------------+--------------------------------------+
| Variable_name | Value |
+------------------------------------+--------------------------------------+
| group_replication_view_change_uuid | aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa |
+------------------------------------+--------------------------------------+
1 row in set (0.00 sec)
现在,您可以选择替代 UUID 来构成 GTID 的一部分,当组复制内部生成的视图更改事务 (View_change_log_event) 写入二进制日志时,将使用该 GTID。 新的组复制系统变量 group_replication_view_change_uuid 指定用于代替组名称(group_replication_group_name 系统变量的值)的 UUID。 替代 UUID 可以更轻松地将视图更改事件与组从客户端收到的事务区分开来。 如果您的设置允许在组之间进行故障转移,并且您需要识别并丢弃特定于备份组的事务,那么这会很有用。 请注意,组的所有成员必须指定相同的备用 UUID,因此以这种方式设置的组不能包含 MySQL 8.0.26 以下版本的成员。
group_replication_view_change_uuid 指定一个备用 UUID,用作组生成的视图更改事件的 GTID 中标识符的 UUID 部分。 替代 UUID 使这些内部生成的交易易于与组从客户端接收的交易区分开来。 如果您的设置允许在组之间进行故障转移,并且您需要识别并丢弃特定于备份组的事务,那么这会很有用。 该系统变量的默认值为 AUTOMATIC,这意味着视图更改事件的 GTID 使用 group_replication_group_name 系统变量指定的组名称,就像来自客户端的事务一样。 没有此系统变量的版本中的组成员将被视为具有值 AUTOMATIC。
备用 UUID 必须与 group_replication_group_name 系统变量指定的组名称不同,并且必须与任何组成员的服务器 UUID 不同。 它还必须与 GTID 中使用的任何 UUID 不同,GTID 应用于此拓扑中任何位置的复制通道上的匿名事务,使用 CHANGE REPLICATION SOURCE TO 语句的 ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS 选项。