10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

18.2.1.2配置组复制实例

本节解释要用于组复制的MySQL Server实例所需的配置设置。有关背景信息,请参见第18.3节“要求和限制”

存储引擎

对于组复制,数据必须存储在InnoDB事务存储引擎中(详细原因请参见第18.3.1节“组复制要求”).其他存储引擎的使用,包括临时的内存存储引擎,可能导致组复制错误。设置disabled_storage_engines系统变量如下,以防止其使用:

disabled_storage_engines = " MyISAM、黑洞、联合、归档、记忆”

注意,使用MyISAM当你将MySQL实例升级到一个版本时,存储引擎被禁用mysql_upgrade仍然在使用(MySQL 8.0.16之前),mysql_upgrade可能会出现错误而失败。要处理这个问题,可以在运行时重新启用该存储引擎mysql_upgrade,然后在重新启动服务器时再次禁用它。有关更多信息,请参见“mysql_upgrade -检查和升级MySQL表”章节4.4.5

复制框架

下面的设置根据MySQL组复制的要求配置复制。

server_id = 1 gtid_mode = enforce_gtid_consistency =

这些设置将服务器配置为使用唯一标识符编号1来启用第17.1.3节,“使用全局事务标识符的复制”,并且只允许执行可以使用GTID安全地记录的语句。

直到MySQL 8.0.20,还需要以下设置:

binlog_checksum =没有

此设置禁用写入二进制日志的事件的校验和,默认情况下是启用的。从MySQL 8.0.21开始,Group Replication支持在二进制日志中出现校验和,并可以使用它们来验证某些通道上事件的完整性,因此可以使用默认设置。有关更多细节,请参见第18.3.2节“组复制限制”

如果您使用的是8.0.3以前的MySQL版本,其中为复制改进了默认值,那么您还需要将这些行添加到成员的选项文件中。如果在后续版本的选项文件中有这些系统变量,请确保按照所示设置它们。更多详情请参见第18.3.1节“组复制要求”

log_bin=binlog log_slave_updates=ON binlog_format=ROW master_info_repository=TABLE relay_log_info_repository=TABLE transaction_write_set_extraction=XXHASH64
组复制设置

此时,选项文件确保配置了服务器,并指示服务器在给定配置下实例化复制基础设施。下面的部分为服务器配置Group Replication设置。

plugin_load_add = ' group_replication。因此' group_replication_group_name=" aaaaaaaaa -aaaaaaa -aaaaa -aaaaa -aaaaaaaaaaa " group_replication_start_on_boot=off group_replication_local_address= "s1:33061" group_replication_group_seeds= "s1:33061, g2:33061,s3:33061" group_replication_bootstrap_group=off
  • plugin-load-add将Group Replication插件添加到服务器启动时加载的插件列表中。在生产部署中,这比手动安装插件更可取。

  • 配置group_replication_group_name告诉插件它正在加入或创建的组名为“aaaaaaaa-aaaa-aaaa- aaaaaaaaa”。

    的价值group_replication_group_name必须是有效的UUID。该UUID在为二进制日志中的组复制事件设置gtid时在内部使用。您可以使用选择UUID ()生成一个UUID。

  • 配置group_replication_start_on_boot变量来指示插件在服务器启动时不自动启动操作。这在设置Group Replication时非常重要,因为它确保您可以在手动启动插件之前配置服务器。一旦配置了成员,就可以进行设置group_replication_start_on_boot使组复制在服务器引导时自动启动。

  • 配置group_replication_local_address设置成员用于与组内其他成员进行内部通信的网络地址和端口。Group Replication将此地址用于涉及组通信引擎(XCom, Paxos变体)远程实例的内部成员对成员连接。

    重要的

    组复制本地地址不能与MySQL Server定义的用于SQL客户端连接的主机名和端口相同主机名而且港口系统变量。它不能用于客户端应用程序。在运行group Replication时,它只能用于组成员之间的内部通信。

    配置的网络地址group_replication_local_address必须由所有小组成员解决。例如,如果每个服务器实例都在具有固定网络地址的不同机器上,则可以使用该机器的IP地址,例如10.0.0.1。如果使用主机名,则必须使用完全限定名,并确保它可以通过DNS正确解析设置文件或其他名称解析进程。从MySQL 8.0.14开始,IPv6地址(或解析到IPv6地址的主机名)可以和IPv4地址一样使用。一个组可以混合包含使用IPv6和IPv4的成员。有关IPv6网络的组复制支持以及混合IPv4和IPv6组的详细信息,请参阅第18.5.5节“支持IPv6和混合IPv6和IPv4组”

    的推荐端口group_replication_local_address是33061。group_replication_local_address组复制使用该参数作为复制组内组成员的唯一标识。您可以对复制组的所有成员使用相同的端口,只要主机名或IP地址不相同,如本教程所示。或者,您可以为所有成员使用相同的主机名或IP地址,只要端口都不同,例如第18.2.2节“本地部署组复制”

    为Group Replication的分布式恢复过程,现有成员向加入成员提供的连接不是由配置的网络地址group_replication_local_address.直到MySQL 8.0.20,组成员提供他们的标准SQL客户端连接来加入成员进行分布式恢复,这是MySQL Server的指定的主机名而且港口系统变量。从MySQL 8.0.21开始,组成员可以发布一个备选的分布式恢复端点列表,作为加入成员的专用客户端连接。有关更多细节,请参见第18.5.3.1节“分布式恢复的连接”

    重要的

    如果一个加入成员不能使用MySQL Server定义的主机名正确识别其他成员,那么分布式恢复可能会失败主机名系统变量。建议运行MySQL的操作系统有一个正确配置的唯一主机名,可以使用DNS或本地设置。中验证服务器用于SQL客户机连接的主机名Member_host“性能架构”表的列replication_group_members.如果多个组成员将操作系统设置的默认主机名外部化,那么加入的成员可能无法将其解析为正确的成员地址,从而无法进行分布式恢复连接。在这种情况下,你可以使用MySQL服务器的report_host系统变量,以配置由每个服务器外部化的惟一主机名。

  • 配置group_replication_group_seeds设置新成员用于建立与组的连接的组成员的主机名和端口。这些成员称为种子成员。一旦建立了连接,组成员信息就会列在Performance Schema表中replication_group_members.通常group_replication_group_seeds列表包含了主机名:端口每个小组成员的group_replication_local_address,但这不是强制性的,可以选择组成员的子集作为种子。

    重要的

    主机名:端口中列出的group_replication_group_seeds是种子成员的内部网络地址,由group_replication_local_address而不是主机名:端口用于SQL客户端连接,如Performance Schema表所示replication_group_members

    启动组的服务器不使用此选项,因为它是初始服务器,因此负责引导组。换句话说,引导组的服务器上的任何现有数据都将用作下一个加入成员的数据。第二个服务器连接要求组中唯一的成员加入,从引导成员上的提供数据复制第二个服务器上的任何缺失数据,然后扩展组。第三个服务器连接可以请求这两个中的任何一个加入,数据被同步到新成员,然后组再次扩展。后续服务器在加入时重复此过程。

    警告

    当同时加入多个服务器时,确保它们指向已经在组中的种子成员。不要使用正在加入组的成员作为种子,因为在联系他们时,他们可能还不在组中。

    最好先启动引导程序成员,然后让它创建组。然后将其作为其他加入成员的种子成员。这确保了在加入其他成员时形成了一个组。

    不支持创建群组时同时加入多个成员。它可能会工作,但很有可能是操作赛跑,然后加入组的行为以错误或超时结束。

    一个加入的成员必须和一个种子成员使用相同的协议(IPv4或IPv6)进行通信group_replication_group_seeds选择。为了获得Group Replication的IP地址权限,种子成员上的allowlist必须包括种子成员提供的协议的加入成员的IP地址,或者解析为该协议的地址的主机名。除了加入会员的地址或主机名之外,还必须设置和允许该地址或主机名group_replication_local_address如果该地址的协议与种子成员发布的协议不匹配。如果一个加入成员没有适当协议的允许地址,它的连接尝试将被拒绝。有关更多信息,请参见第18.6.1节“组复制IP地址权限”

  • 配置group_replication_bootstrap_group指示插件是否引导组。在本例中,尽管s1是组的第一个成员,我们在选项文件中将该变量设置为off。相反,我们配置group_replication_bootstrap_group当实例正在运行时,确保只有一个成员实际引导了组。

    重要的

    group_replication_bootstrap_group变量在任何时候都必须只在属于一个组的一个服务器实例上启用,通常是在第一次引导组时(或者在整个组被关闭并再次恢复时)。如果您多次引导组,例如当多个服务器实例设置了此选项时,那么它们可以创建一个人工脑分裂场景,其中存在两个名称相同的不同组。总是设置group_replication_bootstrap_group =了在第一个服务器实例联机之后。

组中所有服务器的配置都非常相似。您需要更改每个服务器的细节(例如server_iddatadirgroup_replication_local_address).本教程后面将对此进行说明。