组复制的大多数系统变量在不同的组成员上可以具有不同的值。对于以下系统变量,建议在集群的所有节点上
设置相同的值,以避免不必要的事务回滚,消息传递失败或消息恢复失败:
group_replication_auto_increment_increment
group_replication_communication_max_message_size
group_replication_compression_threshold
group_replication_message_cache_size
group_replication_transaction_size_limit
组复制节点上的某些系统变量(包括某些特定于组复制的系统变量和一些常规系统变量)是集群范围的配置设
置。这些系统变量在集群所有节点上必须具有相同的值,并且在组复制运行时不能更改,需要先停止组复制,
然后进行修改,修改了这些系统变量的值之后,还必须将整个集群重新引导才会生效,而不仅仅只是重启某个
节点上的组复制(这里不是指重新启动整个集群的mysqld进程,而是整个集群重新引导启动,即,使用系统变
量group_replication_bootstrap_group= on重新引导集群)。这些系统变量如下:
group_replication_single_primary_mode
group_replication_enforce_update_everywhere_checks
group_replication_gtid_assignment_block_size
default_table_encryption
lower_case_table_names
transaction_write_set_extraction
从MySQL 8.0.16开始,可以在集群仍在运行时使用group_replication_switch_to_single_primary_mode()
和group_replication_switch_to_multi_primary_mode()UDF来更改
group_replication_single_primary_mode和
group_replication_enforce_update_update_everywhere_checks的值。
ps:如果将组复制的许多系统变量作为命令行参数传递给server,则它们在server启动期间将无法完全验证。这些
系统变量包括group_replication_group_name,group_replication_single_primary_mode,
group_replication_force_members,SSL变量和流控系统变量。
在执行START GROUP_REPLICATION语句之前,不会对组复制的系统变量指定的IP地址、主机名等进行验证。
因为在未启动组复制之前,组复制的组通信系统(GCS)不可用。
组复制的状态变量在MySQL 5.7版本中只有3个,在MySQL 8.0版本中只有4个,其中状态变量
group_replication_primary_member在8.0版本中已经弃用,在将来的版本中将会移除(该状态变量在集群处
于单主模式时,表示primary节点的UUID,集群处于多主模式时,该状态变量值是一个空字符串)
* Mysqlx_notified_by_group_replication:MySQL 8.0中新增的全局状态变量,表示发送到集群的通知数量
* Com_group_replication_start:全局,会话状态变量,表示执行start group_replication语句的次数
* Com_group_replication_stop:全局,会话状态变量,表示执行stop group_replication语句的次数
02 MGR系统变量
特定用于组复制插件的系统变量如下:
group_replication_advertise_recovery_endpoints:
Command-Line Format --group-replication-advertise-recovery-endpoints=value
Introduced 8.0.21
System Variable group_replication_advertise_recovery_endpoints
Scope Global
评论