10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 42.0 mb
PDF (A4)- 42.0 mb
手册页(TGZ)- 266.3 kb
手册页(Zip)- 376.1 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

18.1.3.1单主模式

在单主模式下(group_replication_single_primary_mode =对)组有一个设置为读写模式的主服务器。组中的所有其他成员都被设置为只读模式(使用super_read_only =对).主服务器通常是引导组的第一个服务器。加入该组的所有其他服务器都了解主服务器的信息,并自动设置为只读模式。

在单主模式下,Group Replication强制只有一台服务器写入组,因此与多主模式相比,一致性检查可以不那么严格,DDL语句不需要特别小心地处理。的选项group_replication_enforce_update_everywhere_checks启用/禁用对组进行严格一致性检查。当采用single-primary模式部署或将组更改为single-primary模式时,此系统变量必须设置为

指定为主服务器的成员可以通过以下方式更改:

  • 如果现有的初选候选人自愿或意外地离开了选举小组,新的初选候选人将自动选出。

  • 属性将特定成员指定为新的主要成员group_replication_set_as_primary ()函数。

  • 如果你使用group_replication_switch_to_single_primary_mode ()函数将以多主站点模式运行的组更改为以单主站点模式运行,将自动选出新的主站点,或者可以通过使用该函数指定新主站点来指定它。

该函数只能在所有组成员运行MySQL 8.0.13或更高版本时使用。当自动选择或手动指定一个新的主服务器时,它将自动设置为读写,而其他组成员仍然是辅助服务器,因此是只读的。图18.4“新一届初选”显示了这个过程。

图18.4新的初选

5个服务器实例(S1、S2、S3、S4和S5)作为一个互联组部署。服务器S1为主服务器。写客户端与服务器S1通信,读客户端与服务器S4通信。然后服务器S1出现故障,中断了与写客户端的通信。然后,服务器S2接管作为新的主服务器,写客户机现在与服务器S2通信。

当选举或任命一个新的主要服务器时,它可能有一个已应用于旧主要服务器但尚未应用于此服务器的更改的积压。在这种情况下,在新的主进程赶上旧的主进程之前,读写事务可能会导致冲突并被回滚,只读事务可能会导致过期的读取。Group Replication的流控制机制最大限度地减少了快成员和慢成员之间的差异,如果它被激活并进行了适当的调优,则可以减少发生这种情况的可能性。有关流控制的详细信息,请参见18.7.2节“流量控制”.从MySQL 8.0.14开始,您还可以使用group_replication_consistency系统变量来配置组的事务一致性级别以防止此问题。设置BEFORE_ON_PRIMARY_FAILOVER(或任何更高的一致性级别)在新选定的主节点上保存新事务,直到backlog被应用为止。有关事务一致性的更多信息,请参见18.5.2节,“事务一致性保证”.如果一个组没有使用流控制和事务一致性保证,那么在将客户端应用程序重新路由到新的主服务器之前,等待新的主服务器应用其与复制相关的中继日志是一个很好的实践。

18.1.3.1.1初选算法

自动的主要成员选举过程包括每个成员查看组的新视图,排序潜在的新主要成员,并选择最合适的成员。每个成员在本地做出自己的决定,遵循其MySQL Server发行版中的初选算法。因为所有成员必须做出相同的决定,如果其他组成员运行的MySQL Server版本较低,成员就会调整自己的主要选举算法,以便他们的行为与组中MySQL Server版本最低的成员相同。

议员在选举初选时所考虑的因素依次如下:

  1. 第一个考虑的因素是哪个或哪个成员正在运行最低的MySQL服务器版本。如果所有组成员都运行MySQL 8.0.17或更高版本,则成员首先按其发布的补丁版本排序。如果任何成员正在运行MySQL Server 5.7或MySQL 8.0.16或更低版本,成员将首先按照其发布的主要版本进行排序,并且忽略补丁版本。

  2. 如果有多个成员正在运行最低的MySQL Server版本,则考虑的第二个因素是每个成员的成员权重,由group_replication_member_weight成员上的系统变量。如果组中的任何成员正在运行MySQL Server 5.7,而该系统变量不可用,则忽略此因素。

    group_replication_member_weight系统变量指定0-100范围内的数字。所有成员的默认权重为50,因此将权重设置为低于此值以降低其排序,将权重设置为高于此值以增加其排序。您可以使用此加权功能来确定使用更好硬件的优先级,或者确保在主服务器的计划维护期间将故障转移到特定成员。

  3. 如果有多个成员运行最低的MySQL Server版本,并且这些成员中有多个成员具有最高的成员权重(或忽略了成员权重),则考虑的第三个因素是每个成员生成的服务器uuid的字典顺序,由server_uuid系统变量。具有最低服务器UUID的成员被选为主成员。这个因素是一个有保证的和可预测的决胜局,如果不能由任何重要因素决定,所有小组成员都能做出相同的决定。

18.1.3.1.2找到主节点

要了解在单主服务器模式下部署时,哪个服务器是当前的主服务器,请使用MEMBER_ROLE中的列。performance_schema.replication_group_members表格例如:

SELECT MEMBER_HOST, MEMBER_ROLE FROM performance_schema.replication_group_members;+-------------------------+-------------+ | MEMBER_HOST | MEMBER_ROLE  | +-------------------------+-------------+ | remote2.example.com remote1.example.com主| | | |二级| | | remote3.example.com次要的  | +-------------------------+-------------+
警告

group_replication_primary_member状态变量已弃用,并计划在未来的版本中删除。

或者使用group_replication_primary_member状态变量。

显示group_replication_primary_member的状态