从上篇文章我们知道主备同步是依赖于 binlog,主库负责生产 binlog,备库负责消费 binlog,从而实现主备同步。

今天我们来学习一下主备同步里的一个重点的问题:主备延时。

主备延时,简单来说,就是主库和备库的数据一致出现一定的时间差,比如备库的此刻的数据快照是主备5分钟前的数据快照,那就说明主备延时有5分钟。

主备延迟是怎么产生的

产生主备延迟的根本原因是备库上消费 binlog 的速度赶不上主库产生 binlog 的速度。比如:

大事务,例如一次性delete很多数据;

大表的DDL;

备库压力大。例如有些像运维、订单等统计分析在备机上跑;

主备库的服务器的配置不同,主库的服务器配置好,备库的服务器配置差。

主备延迟的排查之路

网络

网络可能导致主备延迟的问题,比如主库或者备库的带宽满负载、主备之间网络延迟很大,有可能会导致主库的 binlog 没有全量传输到备库,造成延迟。

机器性能

备库 使用了烂机器? 比如主库使用了 SSD,而备库使用的是 SATA。

备库 高负载? 可能在备库上做统计分析,导致备库的负载很高。可使用 top 命令进行排查。

备库 磁盘有问题? 磁盘、raid卡、调度策略有问题的情况下,有的时候会出现单个IO延迟很高的情况。可使用 iostat 查看 IO 运行情况。

大事务

是否经常有大事务? 比如在 RBR 模式下,执行带有大量的 delete 操作,或者一个表的 alter 操作等,都会导致延时情况的发生。可通过 processlist 命令查看相关信息,或者使用 mysqlbinlog 查看 binlog 中的 SQL 就能快速确认。

锁冲突问题也可能导致备库的 SQL 线程执行慢。比如一些 select ... for update 的 SQL。可通过 processlist 和 查看 information_schema 下面与锁和事务相关的表来查看分析。

参数

如果使用的是 InnoDB 引擎,可以调整 innodb_flush_log_at_trx_commit、sync_binlog 参数来提升复制速度。

sync_binlog 的默认值是 0,MySQL 不会将 binlog 同步到磁盘,其值表示每写多少 binlog 同步一次磁盘。

innodb_flush_log_at_trx_commit 其值表示每一次事务提交或事务外的指令需要把日志 flush 到磁盘。

注:这种调整可能会影响数据的安全性,需要结合业务来考虑。

多线程

在 MySQL 5.6 版本之前,MySQL采用单线程复制,而从 5.6 开始,正式支持多线程复制。

如果是单线程同步,单个线程存在写入瓶颈,导致主备延迟,那就先调整为多线程试试效果。

可以通过 show processlist 查看是否有多个同步线程,也可以查看参数的方式查看是否使用多线程(show variables like '%备库_parallel%')

当你看到是上图这种结果的时候,恭喜你,你使用的是单线程。使用下面那行命令改造成多线程复制:

STOP 备库 SQL_THREAD;SET GLOBAL 备库_parallel_type='LOGICAL_CLOCK';SET GLOBAL 备库_parallel_workers=8;START 备库 SQL_THREAD;

改造后如下图所示:

参考资料

mysql 主备及时_MySQL高可用(二)主备延时如何解决?相关推荐

  1. mysql lvs 读写分离_mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)

    mysql主从复制与lvs+keepalived实现负载高可用 目录 1.前言    4 2.原理    4 2.1.概要介绍    4 2.2.工作原理    4 2.3.实际作用    4 3方案 ...

  2. oracle主从表分离怎么实时更新数据_高可用数据库UDB主从复制延时的解决

    MySQL主从复制的延时一直是业界困扰已久的问题.延时的出现会降低主从读写分离的价值,不利于数据实时性较高的业务使用MySQL. UDB是UCloud推出的云数据库服务,上线已达六年,运营了数以万计的 ...

  3. 高可用数据库UDB主从复制延时的解决

    MySQL主从复制的延时一直是业界困扰已久的问题.延时的出现会降低主从读写分离的价值,不利于数据实时性较高的业务使用MySQL. UDB是UCloud推出的云数据库服务,上线已达六年,运营了数以万计的 ...

  4. mysql 双主 脑裂_MySQL高可用方案——双主

    MySQL高可用方案--双主 发布时间:2020-03-01 20:45:48 来源:51CTO 阅读:253 作者:warrent MySQL的高可用方案有很多种,双主.MHA.MMM等等,这里只是 ...

  5. mysql mha好吗_MySQL高可用方案MHA的一些总结和思考

    原标题:MySQL高可用方案MHA的一些总结和思考 MySQL高可用方案中MHA绝地是一个相当成熟的实现.对于数据的切换,其实MGR也能很好的完成,也就是说,数据层面的角色切换已经刻意很平滑的做好了, ...

  6. mysql集群搭建_mysql高可用集群搭建

    环境描述: Centos6.5 主库:149 从库:148 数据库版本:mariadb-10.0.33 第一步: 安装数据库: 这里我采用的是二进制安装: 创建用户: useradd -s /sbin ...

  7. mysql主备在同一台_MySQL高可用(一)主备同步:MySQL是如何保证主备一致的

    主备同步,也叫主从复制,是MySQL提供的一种高可用的解决方案,保证主备数据一致性的解决方案. 在生产环境中,会有很多不可控因素,例如数据库服务挂了.为了保证应用的高可用,数据库也必须要是高可用的. ...

  8. mysql keepalived双主双活_mysql高可用架构方案之中的一个(keepalived+主主双活)

    Mysql双主双活+keepalived实现高可用 文件夹 1.前言... 4 2.方案... 4 2.1.环境及软件... 4 2.2.IP规划... 4 2.3.架构图... 4 3.安装设置MY ...

  9. lvs加MySQL读写分离_mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)

    mysql主从复制与lvs+keepalived实现负载高可用 文件夹 1.前言    4 2.原理    4 2.1.概要介绍    4 2.2.工作原理    4 2.3.实际作用    4 3方 ...

最新文章

  1. php获取当月开始和结束的时间戳,PHP获取今天开始和结束的时间戳
  2. 美国的机器人军团要来了吗?
  3. 什么是Memcache
  4. 金立云服务器维护,今天,咱们聊聊金立amigo的防盗功能!
  5. 计算机网络上网时间,电脑怎么限制上网时间
  6. TensorFlow 2.0 - 自定义模型、训练过程
  7. oracle数据库备份和还原
  8. mysql聚合函数需要groupby_sql 聚合函数和group by 联合使用
  9. 赚钱的逻辑和赚钱的道具要发生改变
  10. html语言代码 输入文字,html语言教程文字代码:
  11. OSGEARTH三维地形开源项目
  12. Electron 设置透明窗口transparent 属性win7无效详解
  13. 树莓派入门(六)之控制舵机、伺服电机的驱动代码
  14. 权御天下计算机音乐数字乐谱,权御天下简谱
  15. vue中rule数据校验
  16. 深信服 华为路由器 ipsce对接
  17. MATLAB读取nc格式数据并可视化显示(以海面风场反演为例)
  18. 可再生能源虽好,也需电网配套跟上
  19. python动画精灵_pygame学习笔记(5):游戏精灵
  20. 【工具合集】渗透测试工具库-年度最强合辑

热门文章

  1. 【数据结构与算法】之深入解析“解码方法”的求解思路与算法示例
  2. iOS之深入解析Xcode的拼写检查
  3. 2015/Province_C_C++_C/6/奇妙的数字
  4. 139. Word Break 单词拆分
  5. Java面向对象(五)abstract --- 抽象
  6. 【ARM】Tiny4412裸板编程之异常
  7. 【Linux网络编程】循环服务器之UDP循环模型
  8. 【Linux】一步一步学Linux——su命令(103)
  9. 【STM32】 keil软件工具--configuration详解(下)
  10. 验证二叉搜索数—leetcode98