MySQL8.0 配置MGR事务一致性担保

参数group_replication_consistency:

1.EVENTUAL

RO 和 RW事务不会等待在当前之前事务执行完才执行。RW事务不会等待其他成员执行完,意味着一个事物可能单独在一个成员中存在比其它先。当发生failover时,新primary能在当前之前的事务执行被应用之前,接收新的RO和RW. RO可以结果是旧数据,RW可能导致冲突而引起回滚。

 

2.BEFORE_ON_PRIMARY_FAILOVER

新选取的主库,当前旧主库的blacklog时,新的RO和RW事各会一直held住,直到backlog被应用完。

当failover时,client能看到主库最新的值,确保一致性。但会client会在处理blacklog时产生延时,延时的大小取决于blacklog日志大小。

 

3。BEFORE

RW事务会等待之前事务完成才会被应用,RO事务会等待之前事物完成才会被执行。确保读事务永远是最新值。This reduces the overhead of synchronization on every RW transaction, by ensuring synchronization is used only on RO transactions.

(读少写多,一致性包含BEFORE_ON_PRIMARY_FAILOVER)

 

4。AFTER

RW事务一直等到其它成员已经应用后。对RO事务没影响。当一个事务本地提交时,随后其它节点能读到最新的值。主导RO。This reduces the overhead of synchronization on every RO transaction, by ensuring synchronization is used only on RW transactions

(读多写少,一直性包含BEFORE_ON_PRIMARY_FAILOVER)

 

5。BEFORE_AND_AFTER

RW事务等待 1。之前事务完成,2。更改被其他成员应用。RO会等待之前事务完成才发生。

(BEFORE_ON_PRIMARY_FAILOVER )

 

BEFORE / BEFORE_AND_AFTER : RO,RW

AFTER : no impact RO

 

怎么选:

1.读多写少 -> AFTER

2 读少写多 -》 BEFORE

3。总是读到最新值 -》 BEFORE

4. 主导RO事务,只要rw事务一旦提交,随后能读到最新的 AFTER

5. 主导RO事务,RW事总是读最新数据,一旦提交并应用到其他成员中,随后读最新数据 -》BEFORE_AND_AFTER

6. 系统处理时,一些需求要一致性,一些不需要一致性

SET @@SESSION.group_replication_consistency= 'AFTER'

SET @@SESSION.group_replication_consistency= 'EVENTUAL'

7.在6基础之上,有些在需求要读最新值

SET @@SESSION.group_replication_consistency= ‘BEFORE’

 

 

你可能感兴趣的:(mysql体系结构)