mysql 组复制同步参数group_replication_consistency
group_replication_consistency 这个参数是在8.0.14引进的一个和组复制相关的参数,用来控制组提供的事务一致性保障。可以在全局或单个事务中进行配置。也可在单主组复制环境中配置用于新的主库(primary)选举的组复制一致性防护机制。必须考虑组复制一致性级别对于只读(RO)事务和读写(RW)事务的影响。
此参数有5个可选配置值,分别是:EVENTUAL(默认)、BEFORE_ON_PRIMARY_FAILOVER、BEFORE、AFTER、BEFORE_AND_AFTER
以下按递增事务一致性保证的顺序介绍此变量的选项值:
1、EVENTUAL(默认值)
RO和RW事务都在执行的时候不用等待前面的事务应用完成。这是增加这一变量之前的组复制行为。RW事务不等待其他成员完成应用事务,意味着事务可以在其他成员完成之前外部化。这九可能在在主库发生故障转移的情况下,新主数据库可以在先前的主要事务完成全部应用之前九开始接受新的RO和RW事务。RO事务可能导致过时的数据,RW事务可能会因冲突而导致回滚。 性能最好。
2、BEFORE_ON_PRIMARY_FAILOVER
新选举的主库将继续应用故障主库积压的未完成的事务完成之后,新主数据库开始新手新的事务。这可确保在主库发生故障转移的时候,无论什么情况客户端都能读到最新的数据。这保证了数据的一致性,但是客户端可能出现延迟等待主库处理完成积压的事务。通常这种延迟应该是较小的,但取决于积压事务的量。
3、BEFORE
RW事务在等待所有之前的事务完成之后在开始应用。RO事务等待所有先前的事务完成才执行。这样可保证此事务仅通过事务的延迟的影响就能读取到最新值。这种通过仅在RO事务上的同步保障,减少了每个RW事务上的同步开销。此一致性级别还包括由BEFORE_ON_PRIMARY_FAILOVER提供的一致性保证。
4、AFTER
RW事务等待其它成员都应用完成其改变才开始执行。该数据对RO交易没有影响。此模式保障在本地成员上提交事务时,任何后续事务都会读取任何组成员的写入值或更新值。将此模式与主要用于RO操作的组一起使用,以确保应用的RW事务在提交后可在其它节点随处同步应用。并请应用程序可以使用它来确保后续读取操作获取包含最新写入的最新数据。这减少了每个RO事务上的同步开销,通过确保仅在RW事务上使用同步。此一致性级别还包括由BEFORE_ON_PRIMARY_FAILOVER提供的一致性保证。 性能极差
5、BEFORE_AND_AFTER
RW事务等待包含:1)所有先前的事务在应用之前完成,2)直到其更改在其它成员上完成应用。RO事务在执行之前等待所有先前的事务完成。
这可以保证此事务在最新的数据快照上执行,并且一旦事务完成,所有后续任何不管在哪个成员上执行的事务都会读取包含其更改的数据状态。
此一致性级别还包括由BEFORE_ON_PRIMARY_FAILOVER提供的一致性保证。 性能极差