欢送来到 GreatSQL社区分享的MySQL技术文章,如有疑难或想学习的内容,能够在下方评论区留言,看到后会进行解答
  • GreatSQL社区原创内容未经受权不得随便应用,转载请分割小编并注明起源。
MySQL 8.0.26下MGR体现如何?用实测数据谈话。
此外,MySQL 8.0.26还存在一个重大缺点。

MySQL 8.0.26公布差不多两个月了,始终还没对它进行测评,看到release notes中波及到几个MGR相干的Bug fixed,最近抽空对其简略测试一番,上面说说后果吧。

本文后半段还会爆出MySQL 8.0.26的一个重大缺点。

本次测试选用sysbench的mix-load计划(感激楼方鑫老师的分享):

require("oltp_common")local runtype = 0;function prepare_statements()   -- use 1 query per event, rather than sysbench.opt.point_selects which   -- defaults to 10 in other OLTP scripts   sysbench.opt.point_selects=1   runtype = (10 * sysbench.tid + 10) / sysbench.opt.threads   if runtype <= 6 then     prepare_point_selects()   else     prepare_non_index_updates()   endendfunction event(thread_id)   if runtype <= 6 then     execute_point_selects()   else     execute_non_index_updates()   endend

上面是压测相干的几个指标参数:

  • --tables=10
  • --table_size=100000
  • --threads=16
  • --report-interval=1

上面是InnoDB & MGR相干的几个主要参数选项值:

innodb_buffer_pool_size = 256Mslave_parallel_type = LOGICAL_CLOCKslave_parallel_workers = 64binlog_transaction_dependency_tracking = WRITESETslave_preserve_commit_order = 1slave_checkpoint_period = 2group_replication_flow_control_mode = "DISABLED"

备注:因为测试机配置个别,所以压测的数据量并不大,并发也不高。

接下来针对 group_replication_consistency 几个不同可选项,我拿GreatSQL 8.0.25-15 和 MySQL 8.0.26进行比照,次要关注tps和latency数据。

1. group_replication_consistency=EVENTUAL

从下面的几个测试数据能够看到:

1.MySQL 8.0.26的tps还是很不安稳,稳定很大。

2.MySQL 8.0.26的latency也是稳定很大。

另外,从测试的直观感触来看,在MySQL 8.0.26以前的版本中存在的几个问题略有改善:

1.被kill后的SECONDARY节点从新加回集群,分布式事务复原较快(快辄20-30秒左右),不像以往要很久(起码1-2分钟)。

2.把SECONDARY节点kill后,集群tps稳定的时长变短了,之前大略须要20-30秒,当初大略10-20秒。

3.把SECONDARY节点kill后,集群还是大概要20多秒能力将其踢出,这个没改善。

4.磁盘空间满之后会导致MGR事务被阻塞,在8.0.26里仍然会阻塞事务,工夫太久就没及时处理的话,还会因为待认证事务沉积等起因导致mysqld过程被oom killed,这个算是更重大了(BUG#104979),前面我再整顿文章。

接下来说说MySQL 8.0.26的重大问题吧(BUG#104980)。

复现计划:

1.设置 group_replication_consistency = BEFORE_AND_AFTER | AFTER(二选一,其余模式暂未呈现问题)。

2.启动sysbench对MGR集群进行继续压力测试。

3.压测过程中,随机kill某个SECONDARY节点。

4.经多次重试,会有相当大概率呈现该SECONDARY节点无奈从新加回集群的问题。报错信息相似上面这样:

[ERROR] [MY-013309] [Repl] Plugin group_replication reported: 'Transaction '2:39976870' does not exist on Group Replication consistency manager while receiving remote transaction prepare.'[ERROR] [MY-011452] [Repl] Plugin group_replication reported: 'Fatal error during execution on the Applier process of Group Replication. The server will now leave the group.'[ERROR] [MY-011712] [Repl] Plugin group_replication reported: 'The server was automatically set into read only mode after an error was detected.'"

同样的测试,在GreatSQL 8.0.25中未呈现,还是相当给力的呀。

所幸的是,个别很少选用AFTER或BEFORE_AND_AFTER模式,所以能碰到这个BUG的人不会太多才对。

再报告个小问题(BUG#104974),在线设置 group_replication_consistency 选项值时,如果设置为 BEFORE,则必须加引号才能够,否则会报错,其余几个模式则没问题:

mysql>set global group_replication_consistency=EVENTUAL;Query OK, 0 rows affected (0.00 sec)mysql>set global group_replication_consistency=BEFORE_ON_PRIMARY_FAILOVER;Query OK, 0 rows affected (0.00 sec)mysql>set global group_replication_consistency=BEFORE;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEFORE' at line 1mysql>set global group_replication_consistency='BEFORE';Query OK, 0 rows affected (0.00 sec)mysql>set global group_replication_consistency=AFTER;Query OK, 0 rows affected (0.00 sec)mysql>set global group_replication_consistency= BEFORE_AND_AFTER;Query OK, 0 rows affected (0.00 sec)

Enjoy GreatSQL :)

文章举荐:

GreatSQL MGR FAQ
https://mp.weixin.qq.com/s/J6...

万答#12,MGR整个集群挂掉后,如何能力主动选主,不必手动干涉
https://mp.weixin.qq.com/s/07...

『2021数据技术嘉年华·ON LINE』:《MySQL高可用架构演进及实际》
https://mp.weixin.qq.com/s/u7...

一条sql语句慢在哪之抓包剖析
https://mp.weixin.qq.com/s/AY...

万答#15,都有哪些状况可能导致MGR服务无奈启动
https://mp.weixin.qq.com/s/in...

技术分享 | 为什么MGR一致性模式不举荐AFTER
https://mp.weixin.qq.com/s/rN...

对于 GreatSQL

GreatSQL是由万里数据库保护的MySQL分支,专一于晋升MGR可靠性及性能,反对InnoDB并行查问个性,是实用于金融级利用的MySQL分支版本。

Gitee:
https://gitee.com/GreatSQL/Gr...

GitHub:
https://github.com/GreatSQL/G...

Bilibili:
https://space.bilibili.com/13...

微信&QQ群:
可搜寻增加GreatSQL社区助手微信好友,发送验证信息“加群”退出GreatSQL/MGR交换微信群

QQ群:533341697
微信小助手:wanlidbc

本文由博客一文多发平台 OpenWrite 公布!