从上篇文章我们知道主备同步是依赖于 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_commitsync_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高可用(二)主备延时如何解决?的更多相关文章

  1. [Mysql高可用]——双主互备+keepalived

    实验架构图    实验环境 主机名 操作系统 Mysql版本 keepalived版本 主机IP VIP lyj1(Master/Slave) Red Hat release 6.5 Mysql5.6 ...

  2. MySQL 高可用:mysql+Lvs+Keepalived 负载均衡及故障转移

    系统信息: mysql主库 mysql从库 VIP 192.168.1.150 mysql 主主同步都设置 auto-increment-offset,auto-increment-increment ...

  3. MySQL高可用(一)主备同步:MySQL是如何保证主备一致的

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

  4. MySQL高可用基础之keepalived+双主复制【转】

    环境:MySQL-VIP:192.168.1.3MySQL-master1:192.168.1.1MySQL-master2:192.168.1.2 OS版本:CentOS release 6.4 ( ...

  5. MySQL高可用系列之MHA(二)

    一.參数说明 MHA提供了一系列配置參数.深入理解每一个參数的详细含义,对优化配置.合理使用MHA非常重要.非常多高可用性也都是通过合理配置一些參数而实现的. MHA包含例如以下配置參数,分别说明例如 ...

  6. MySQL高可用架构之MHA

    简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是 ...

  7. mysql高可用架构

    高可用   高可用(High Availabiltity) 应用提供持续不间断(可用)的服务的能力 系统高可用性的评价通常用可用率表示   造成不可用的原因 硬件故障(各种) 预期中的系统软硬件维护 ...

  8. MySQL高可用之MHA的搭建 转

     http://www.cnblogs.com/muhu/p/4045780.html http://www.cnblogs.com/gomysql/p/3675429.html http://www ...

  9. 基于keepalived搭建MySQL高可用集群

    MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和 ...

随机推荐

  1. 思维导图软件iMindMap怎么用模板制作思维导图

    随着思维导图的不断发展,市场上相关的软件也越来越多.像XMind.MindManager等.每一款软件都有它独特的亮点.作为众多思维导图软件中的一款,iMindMap算是比较亮眼的了.现在很多人都在用 ...

  2. 《高并发下的.NET》第2季 - 《memcached连接暴增案》第1集:问题表现

    在<.NET 5.0 背锅案>第7集-大结局之后,园子和 .NET 继续过上了幸福生活...剧情很美好,现实很残酷...现实是旧案刚结,新案立至,而且新案与旧案有关联,被迫继续拍剧,并对该 ...

  3. serialVersionUID作用是什么以及如何生成的?

    目录 正常不设置serialVersionUID 的序列化和反序列化 序列化之后,类文件增加了字段,反序列化会怎么样? 指定serialVersionUID,减少或者增加字段会发生什么? serial ...

  4. 解决YUM下Loaded plugins: fastestmirror Determining fastest mirrors 的错误问题

    最近想再购买一台虚拟服务器做项目测试,之前在西部数码购买的已经过期了,在同事的推荐下去搬瓦工购买了一台服务器,听他介绍在这里购买服务器很便宜($19.99/年)而且还是国外的,看着相比之前的确实挺便宜 ...

  5. 用PyCharm打个专业的招呼

    PyCharm 是什么 PyCharm(读作"拍恰姆")是 JetBrains 全家桶中的一员,专门用来写 Python 的: 官方网址是: https://www.jetbrai ...

  6. 冲刺随笔——Day_Ten

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...

  7. 最新小样本学习综述 A Survey on Few-Shot Learning | 四大模型Multitask Learning、Embedding Learning、External Memory…

    目录 原文链接: 小样本学习与智能前沿 01 Multitask Learning 01.1 Parameter Sharing 01.2 Parameter Tying. 02 Embedding ...

  8. Python & PyQt学习随笔:PyQt主程序的基本框架

    在完成UI设计将UI通过PyUic转成Py文件后,由于这个生成的文件每次通过PyUic生成时都会被覆盖,因此应用的主程序必须另外单独编写py文件.需要将UI生成的文件import到主程序的py文件中. ...

  9. PyQt(Python+Qt)学习随笔:Qt Designer中部件与国际化有关的设置translatable、 disambiguation和comment含义

    在Qt Designer的部件的多个属性中,如toolTip.whatsThis.accessibleName.accessibleDescription.text等都有国际化属性设置,国际化属性有三 ...

  10. Hive 表操作(HIVE的数据存储、数据库、表、分区、分桶)

    1.Hive的数据存储 Hive的数据存储基于Hadoop HDFS Hive没有专门的数据存储格式 存储结构主要包括:数据库.文件.表.试图 Hive默认可以直接加载文本文件(TextFile),还 ...