配置组复制前提要求:
1、innodb存储引擎:数据必须存放在InnoDB事务存储引擎中。事务被乐观地执行,然后在提交时检查是否有冲突。
如果存在冲突,为了在整个组中保持一致性,将回滚一些事务。这意味着需要事务性存储引擎。此外,InnoDB还提供了一些额外的功能,可以更好地管理和处理与组复制一起操作时的冲突。使用其他存储引擎(包括临时内存存储引擎)可能导致组复制出错。通过在组成员上设置系统变量disabled_storage_engines,可以防止使用其他存储引擎,例如:disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
2、主键:组要复制的每个表都必须有一个已定义的主键,或者等效的主键,等效的主键是非空的唯一键。这些键需要作为表中每一行的唯一标识符,使系统能够通过准确地标识每个事务修改了哪些行来确定哪些事务发生冲突。
3、IPV4网络:MySQL组复制使用的组通信引擎仅支持IPv4。因此,Group Replication需要IPv4网络基础设施。
4、网络性能:MySQL Group Replication被设计为部署在服务器实例彼此非常接近的集群环境中。网络延迟和网络带宽都会影响组的性能和稳定性。所有组成员之间必须始终保持双向通信。如果入站或出站通信阻塞服务器实例(例如,通过防火墙,或者连接问题),该成员不能在组中工作,组成员(包括有问题的成员)可能无法为受影响的服务器实例报告正确的成员状态。
组成员实例配置要求
1、唯一的server_id
2、二进制日志
3、副本更新记录
4、二进制日志行格式
5、关闭二进制日志校验
6、开启全局事务标识符
7、复制信息存储库设置为TABLE
8、事务写集提取
9、小写表名
10、多线程类型
官方要求译文如下:
独特的服务器标识符。
根据复制拓扑中所有服务器的需要,使用server_id系统变量为服务器配置唯一的服务器ID。
当默认服务器ID为0时,复制拓扑中的服务器无法相互连接。
服务器ID必须为1 ~(232)−1的正整数,且不能与复制拓扑中其他服务器使用的其他服务器ID相同。
二进制日志活动。
设置——log-bin [= log_file_name]。
MySQL Group Replication复制二进制日志内容,因此需要打开二进制日志进行操作。
该选项默认启用。
参见第5.4.4节“二进制日志”。
副本更新记录。
设置——log-slave-updates。
服务器需要记录通过复制应用程序应用的二进制日志。
该组中的服务器需要记录它们从该组接收和应用的所有事务。
这是必需的,因为恢复是依靠组中参与者的二进制日志进行的。
因此,每个事务的副本需要存在于每个服务器上,即使那些事务不是在服务器本身上启动的。
二进制日志行格式。
设置——binlog-format =行。
Group Replication依赖于基于行的复制格式在组中的服务器之间一致地传播更改。
它依赖于基于行的基础设施来提取必要的信息,以检测在组中不同服务器中并发执行的事务之间的冲突。
请参见16.2.1节“复制格式”。
二进制日志校验关闭。
设置——binlog-checksum =没有。
由于复制事件校验和的设计限制,Group replication不能使用它们,并且必须禁用它们。
全局事务标识符开启。
设置gtid_mode=ON和enforce_gtid_consistency=ON。
Group Replication使用全局事务标识符精确地跟踪每个服务器实例上提交了哪些事务,从而能够推断哪些服务器执行了可能与其他地方已经提交的事务冲突的事务。
换句话说,显式事务标识符是框架的一个基本部分,它能够确定哪些事务可能发生冲突。
请参见16.1.3节,“使用全局事务标识符的复制”。
复制信息存储库。
设置master_info_repository=TABLE和relay_log_info_repository=TABLE。
复制应用程序需要将源和副本元数据写入mysql。
slave_master_info和mysql。
slave_relay_log_info系统表。
这确保了Group Replication插件具有一致性的可恢复性和复制元数据的事务性管理。
请参见16.2.4.2节“复制元数据存储库”。
事务写集提取。
Set——transaction-write-set-extraction=XXHASH64以便在收集行以将其记录到二进制日志时,服务器也收集写集。
写集基于每一行的主键,是标记的简化和紧凑视图,唯一标识更改的行。
然后,该标记用于检测冲突。
小写表名。
将——lower-case-table-names设置为所有组成员的相同值。
使用InnoDB存储引擎时设置为1是正确的,这是组复制需要的。
注意,这个设置不是所有平台上的默认设置。
多线程的类型。
Group Replication成员可以配置为多线程副本,从而允许并行应用事务。
slave_parallel_workers的非零值启用成员上的多线程应用程序,最多可以指定1024个并行应用程序线程。
如果这样做,还需要进行以下设置:
slave_preserve_commit_order = 1
此设置是为了确保并行事务的最终提交与原始事务的顺序相同。
Group Replication依赖于基于保证所有参与成员以相同的顺序接收和应用已提交事务的一致性机制。
slave_parallel_type = LOGICAL_CLOCK
当slave_preserve_commit_order=1时需要这个设置。
它指定用于决定哪些事务允许在副本上并行执行的策略。
设置slave_parallel_workers=0将禁用并行执行,并为副本提供一个应用程序线程而没有协调

本文详细阐述了配置MySQL InnoDB存储引擎以支持群复制,包括设置服务器ID、启用二进制日志、配置主键、IPv4网络要求、网络性能以及必备的组成员配置。涵盖实例配置步骤、故障解决与状态查看,适合部署多主群复制环境。
最低0.47元/天 解锁文章
514

被折叠的 条评论
为什么被折叠?



