vlambda博客
学习文章列表

数据库主从同步延迟问题


数据库主从同步延迟

主从同步延迟分析

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只做数据备份,不分担访问流量