前言:MySQL官方在5.7.17版本中发布了全新的高可用集群方案MySQL Group Replication,简称:MGR。简单说就是通过Paxos一致性协议复制,试图解决基于传统的异步复制和半同步复制中数据一致性问题无法保证的问题,这项功能对于MySQL DBA来说绝对是个福音。本文暂且不讨论这种方案是否真的可靠,留到以后再来探讨。
这里暂时不深入介绍MGR的工作原理,又兴趣的可以参考MySQL官方文档了解,先来看下与MySQL半同步复制的性能差异。
测试集群:3节点的MGR(Single-Primary Mode)和1主2从的半同步复制。
物理机配置:3台
Release | CentOS release 6.7 (Final)
Kernel | 2.6.32-573.el6.x86_64
cpu 48xIntel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz
内存 966.3M bond0 2000Mb/s Full
磁盘 SSD
压测工具:
sysbench 1.1.0
MySQL版本配置:
Server version: 5.7.18-15-log Percona Server (GPL), Release 15, Revision bff2cd9
innodb_buffer_pool_size = 48G
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
slave_parallel_type = LOGICAL_CLOCK
slave_parallel_workers = 16
group_replication_compression_threshold=100
group_replication_flow_controlmode=DISABLED
半同步复制参数
loose_rplsemisyncmasterwaitpoint = AFTER_COMMIT
loose_rplsemisyncmasterwaitforslavecount = 1
数据量:1000w行记录,size2Gb
并发数:200
压测:
sysbench oltpreadwrite.lua --mysql-host=******** --mysql-port=****** --mysql-db=db1 --mysql-user=******** --mysql-password=******* --table_size=10000000 --tables=1 --threads=200 --time=900 --report-interval=10 run
测试结果:
说明:并没有于MySQL的异步复制做比较,实际上MGR还是采用了异步复制,这个后面有机会再介绍。