MySQL 5.6 测试之 Replication(主从复制)

MySQL 5.6测试之Replication

一、简述
MySQL 5.6版本相比以前新增了很多令人激动的特性,简要介绍见:转:MySQL 5.6新特性。性能方面已经做过测试了,详细请见:MySQL 5.6 vs MariaDB 5.5 vs Percona(5.5 & 5.6) 之TPCC性能测试。接下来继续测试其Replication(主从复制)功能,看看是否依旧能让人激动。

二、测试环境
2.1 测试环境和之前一样,详细见下图:

2.2 自动化测试脚本 MySQL 5.6 vs MariaDB 5.5 vs Percona(5.5 & 5.6) 之TPCC性能测试 文中已提及,下载地址:tpcc-run.sh

2.3 重点配置选项差异对比

#binlog
log-bin = binlog
binlog_format = mixed
gtid_mode = ON
disable-gtid-unsafe-statements = 1
binlog_cache_size = 4M
max_binlog_size = 1G
max_binlog_cache_size = 2G
sync_binlog = 1
expire_logs_days = 1

#relay log
max_relay_log_size = 1G
relay_log_purge = 1
relay_log_recovery = 1
master_verify_checksum = 1
master_info_repository = 'TABLE'
slave_sql_verify_checksum = 1
slave_allow_batching = 1
log_slave_updates

MySQL 5.6宣称支持多线程并发复制,事实上是针对每个database开启相应的独立线程,如果线上业务中,只有一个database或者绝大多数压力集中在个别database的话,多线程并发复制特性就没有意义了。

三、测试结果
测试方法:部署master-slave replication环境后,在master上运行tpcc压力测试,然后观察tpcc测试结果,slave上数据复制进度以及数据一致性等。

TpmC结果对比(由于之前已做过其他对比测试,在这里仍旧以模式 "percona 5.6.6-m9-56(独享,1 bp)"(黄色底)为基准进行对比):

四、小结
percona 5.6在开启binlog,启用复制后,性能并不像以前的版本那样突降。在多次测试案例中,比没开binlog还要高,并且测试完毕后可保证数据一致性(测试期间2次kill -9了slave实例)。在以往的版本中,经过大压力测试或者线上运行一段时间后,数据很容易就不一致了。
另外,tpcc压1000个dw,循环3次,从8,16,32...~256线程并发跑,跑percona 5.6复制,slave比master慢了7小时18分钟,这方面仍有待改进。

评论

是的,主要的原因还是SLAVE上的IO/SQL是单线程的。

请教一下,能否在同步的时候,我们从主机dump一个数据文件, 在从机还原这个文件,然后在从机指定主机gtid,从我的测试结果来看,好像不能这么做。

倒是没这么测试过,不过使用GTID的话,不能像以前一样指定log_file 和 log_pos,只能是auto模式。回头有机会我再测试下,你也可以试试。

请教一下,5.6的并行复制一定要在row模式下么?
另外和GTID是否有关系,是否要在使用GTID情况下才能使用并行复制?

官方5.6版本的并行复制是 database 级的并行。也就是说,如果你一个实例下,只有一个database的话,那么所谓的并行就没意义。具体可以看下官方手册吧。