数据库主从同步延迟问题
数据库主从同步延迟
主从同步延迟分析
Master 与 Slave 之间的延迟,是客观存在的。
可能会导致主从同步延迟的原因:
网络
主机或从机网络宽带打满、主从之间网络延迟很大
机器性能
从机配置差,机器负载高,使用top命令
从机磁盘问题,出现io延迟很高,使用iostat查看io运行情况
大事务
从机执行主机同步过来的DML、DDL,可能与从机上的其它查询产生lock争用
锁 从
参数
从机设置innodb调整innodbflushlogattrxcommit、syncbinlog参数来提升复制速度
从机设置syncbinlog=0 关闭binlog,innodbflushlogattrxcommit = 0提高sql执行效率
多线程复制
mysql 5.6 开始支持多线程复制,show processlist查看是否使用多线程或show variables like '%slave_parallel%' 查看是否使用多线程
如果是单线程,通过下面命令修改为多线程:
STOP SLAVE SQL_THREAD;
SET GLOBAL slave_parallel_type='LOGICAL_CLOCK';
SET GLOBAL slave_parallel_workers=8;
START SLAVE SQL_THREAD;
主从同步延迟解决
大事务拆小事务,减少DML批量操作
添加缓存,优先从缓存读取,减轻数据库并发压力,Slave只做数据备份,不分担访问流量