mysql速度 服务器内存测试_【MYSQL备库恢复速度测试 半同步速度测试】

测试工具:sysbench

测试服务器:DL380

G7 2台master-slave模式

内存大小:主机内存32G ,INNODB POOL SIZE 20G

硬盘:2块普通的HDD盘

CPU:12物理core

raid卡写cache开启

mysql版本:5.6.19

测试结论:

1)MYSQL半同步复制可以一定程度解决多机数据一致性问题,性能要比异步复制低很多。同样的测试脚本,异步复制在TPS 10000的情况下,半同步复制只有3000。

2)MYSQL的备机恢复能力非常弱,这是由于它的复制只能单线程,而主库的交易却是多线程并发的。如果想解决这个问题,可以考虑分库,分库后可以利用多线程。

测试场景一:一主一备,半同步复制下每秒的事务数

半同步复制介绍:

传统的异步复制方式,主库把BINLOG日志发送给从库,并不会等待从库确认接受完毕,这意味着主服务器DOWN机后,从机可能存在没有主库已经提交的BINLOG日志。为了解决这个问题,MYSQL 5.5版本引入半同步复制模式,该模式可以确保从服务器接受完主服务器的BINLOG日志并写入到自己的RELAY LOG中,然后给主服务器一个反馈,告诉对方已经接受完毕。此模式一定程度上可以确保数据库切换后不丢失数据,但是影响性能。

涉及参数:

sync_binlog=1

innodb_flush_log_at_trx_commit=1

innodb_flush_method=O_DIRECT

rpl_semi_sync_master_enabled=1

rpl_semi_sync_master_timeout=1000

rpl_semi_sync_slave_enabled=1

一个事务包含:(一个insert 3个update 1个delete)

测试脚本:

sysbench --test=oltp

--mysql-table-engine=innodb --oltp-table-size=10000000 --oltp-distinct-ranges=0

--mysql-db=test --mysql-user=root --mysql-password=123456 --oltp-order-ranges=0

--oltp-range-size=100 --oltp-point-selects=0 --oltp-simple-ranges=0

--oltp-sum-ranges=0 --oltp-test-mode=complex --max-requests=2000000

--num-threads=25 --max-time=40 run

测试结果:

异步复制情况下每秒10000以上的TPS

半同步复制情况下每秒接近3000的TPS,跟异步复制的复制效率差距还是很大的。

如果网络异常,半同步复制会降级为异步复制,待网络恢复后,自动升级为半同步模式。

如果采用双master架构,两台主机均可以配置为半同步模式。

测试场景二:备库的复制延迟

涉及参数:

slave_parallel_workers=4

测试结果:

主库每秒37792的DML操作,备库每秒8745的复制速度。由于MYSQL的复制针对一个DB只能是单线程,因此复制速度非常慢。

如果主库每秒的DML操作次数超过8000左右就会产生复制延迟。如果备库本身还有提供外部业务查询的话,可能会进一步拖慢备库的复制速度。

如果系统分库的话,就可以使用并行复制,每多一个复制线程,可以提升70%左右的复制速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值