Tencent/phxsql

主库insert高负载情况时候,从库io延迟很久,此时,会有自动切换主节点失败危险

Closed this issue · 4 comments

问题大体描述:目前,三节点集群,每个节点部署在机械硬盘环境上。通过,对主库insert压力负载。发现从库io会慢于主库io很久(大概5分钟左右),此时,主库异常,则集群不能自动选主。一直到,从库io完成,才能重新选主。

我的负载命令:sysbench --test=/usr/share/doc/sysbench/tests/db/insert.lua --mysql-host=192.168.0.178 --mysql-port=54321 --mysql-user=lril --mysql-password=123456 --mysql-db=sbtest_high_load --oltp-tables-count=3 --oltp-table-size=500000 --report-interval=10 --rand-init=on --max-requests=0 --oltp-read-only=off --max-time=120 --num-threads=(50 。。。120)run
现象:用iostat观察,w/s可以达到50MB/s。%util 也有40-50.

这时,如果kill掉主库的mysql或是其他phxbinlogsvr等,自动选主不能完成,一直到从库io完成。在kill掉主库上程序前,发现主库io已经完成。

问:为何从库io会延迟主库这么久,此时,主库如果出现异常,选主一直不能完成!!如何保证这段时候的稳定,可能是个问题。

这个是否和phxrpc组件配置的IO线程数有关

这种情况应该是,从库已经收到到了binlog(否则paxos没完成,主库不会执行insert),但是mysql还没来得及执行完,压测时候容易见到这种情况(有大量并发insert)。这个跟mysql执行relay binlog的效率有关,我估计是从库需要顺序执行relay binlog导致从库比较慢。

不支持并行apply么

@dusteye 这个属于mysql内部的实现了