主从延迟是一个不大不小的问题。但是延迟非常大可能影响从库提供读或者发生故障主从切换后出现问题。个人的一点小经验分享给大家。
解决方案: 1、检查主从机器的IO状态,磁盘等硬件是否有问题 a.查看机器监控,查看主从io状态是否存在异常; b.检查机器磁盘状态; c.检查主从机器配置是否有差异。
2、登录数据库,查看状态信息,
show slave status\G
多看几次,看Second_behind_Master的参数值是否变化。如果在减小就说明业务在追。 如果有配置心跳表(pt-heartbeat等方案),也可以通过心跳表观察:
select * from mysql.heatbeat;
3、调整“双1”参数为“双0”,等待延迟追平调回“双1” #########双1 参数为0################
set global innodb_flush_log_at_trx_commit=0;
set global sync_binlog=0;
#########双1参数 为1################
set global innodb_flush_log_at_trx_commit=1;
set global sync_binlog=1;
4、开启并行复制
-- 查看并行的slave的线程的个数,默认是0.表示单线程
show global variables like 'slave_parallel_workers';
-- 根据实际情况保证开启多少线程
set global slave_parallel_workers = 4;
-- 设置并发复制的方式,默认是一个线程处理一个库,值为database(5.7以及之前版本)
show global variables like '%slave_parallel_type%';
-- 停止slave
stop slave;
-- 设置属性值(必须stop slave 设置)
set global slave_parallel_type='logical_clock';
-- 开启slave
start slave;
-- 查看线程数
show full processlist;