1,主库原因
1、主库做修改操作之后,才会记录二进制日志。
sync_binlog=0/1
1:表示:每次事务commit,刷新binlog到磁盘
0:系统决定binlog什时候刷新到磁盘
2,io导致
将binlog和数据分开放
单独binlog存放在固态盘
3、主库的压力特别大(大事务、多事务)
解决方案:
做好数据库优化
(1) 将大事务分成多个小事务。
TPS:每秒的事务量
QPS:每秒查询量
买更好的硬件(scale up)
业务分离——读写分离、分库分表(scale out)
4、从库数量多,导致dump线程繁忙
数据库主从,从库数量不宜超过四台,如果超过对主库压力过大
2,从库原因
1、relay-log写入慢(硬件慢)
半同步复制,可以控制relaylog及时写入
relaylog SSD
2、SQL线程慢
主从硬件差异比较大,更换硬件
从库没有作过优化,优化数据库
3,竟可能的缩小主从延迟
大事务拆成小事务,多事务进行分离
使用多级主从,分库分表架构
将binlog放到ssd或者flash上,高性能存储
将relay放到ssd或者flash上
尽量选择和主库一致硬件
数据库主从单独使用高性能交换机
数据库主从机器网卡做端口聚合,竟可能减小网络延时
4mycat的全局表
Mycat的全局表,比如你有三个库,写入时三个库都做写入,但是读取时只从其中一个库读取,
全局表配置使用type='global
全局表数据增加或者修改时,节点之间保持数据一致
全局表只适合修改不频繁的表,例如字典表
为了保持数据的一致性,当全局表更新数据时会通过锁机制来保证数据统一。
这也导致了并发更新的时候死锁的发生