当前位置: 首页 > news >正文

Seconds_Behind_Master越来越大,主从同步延迟

问题现象

发现从库mysql_slave的参数Seconds_Behind_Master越来越大。已排除主从服务器时间不一致;那么主要就判断两点:是io thread慢还是 sql thread慢?先观察show slave status\G 。

判断3个参数(参数后面的值是默认空闲时候的正常值):

Slave_IO_State: Waiting for master to send event

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

Seconds_Behind_Master: 0

1.sql thread慢的表现:

Seconds_Behind_Master越来越大

Slave_SQL_Running_State: Reading event from the relay log

2.io thread慢的表现:

Seconds_Behind_Master为0

Slave_SQL_Running_State: 显示正常值

Slave_IO_State:显示忙碌状态

本文观察到的值:

Slave_IO_State: Queueing master event to the relay log

Seconds_Behind_Master: 30880

Slave_SQL_Running_State: Reading event from the relay log

上述三个参数,推断是sql thread慢

同步延迟信息详见如下:

mysql> show master status \G
*************************** 1. row ***************************
             File: mysql-bin.000057
         Position: 214873221
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: 838ad3df-a43d-11e8-8b02-6c92bf7daa8d:1,
efd10b43-a43c-11e8-85d8-6c92bf7d9fd1:1-134202381
1 row in set (0.00 sec)

从库延迟:

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Queueing master event to the relay log
                  Master_Host: 192.168.10.111
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000057
          Read_Master_Log_Pos: 214813221
               Relay_Log_File: relay-bin.00045
                Relay_Log_Pos: 28055325
        Relay_Master_Log_File: mysql-bin.000057
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
          Exec_Master_Log_Pos: 94286319
              Relay_Log_Space: 956058939
             Seconds_Behind_Master: 30880
             Master_Server_Id: 113306
                  Master_UUID: efd10b43-a43c-11e8-85d8-6c92bf7d9fd1
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Reading event from the relay log
           Master_Retry_Count: 86400
           Retrieved_Gtid_Set: efd10b43-a43c-11e8-85d8-6c92bf7d9fd1:153917-55474510
            Executed_Gtid_Set: 838ad3df-a43d-11e8-8b02-6c92bf7daa8d:1,
efd10b43-a43c-11e8-85d8-6c92bf7d9fd1:1-54003557
                Auto_Position: 1
1 row in set (0.00 sec)

注意: Seconds_Behind_Master: 30880

分析步骤:

开始怀疑是参数配置的差异,比对/etc/my.cnf后发现,发现配置并无差异。

从库使用操作系统命令dstat观察,发现繁忙时候,slave的IO写速度上不去

[root@mysql ~]# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  0   0 100   0   0   0|  19k  686k|   0     0 |   0     0 | 231   648
  0   0  99   1   0   0|   0  1388k| 798B  396B|   0     0 | 358  1596
  0   0  99   1   0   0|   0  1676k| 244B  170B|   0     0 | 397  1949
  0   0  99   1   0   0|   0  1796k|1490B  236B|   0     0 | 451  2107
  0   0  99   1   0   0|   0  1764k| 244B  170B|   0     0 | 414  2104
  0   0 100   0   0   0|   0  1536k|1068B  170B|   0     0 | 390  1649
  0   0  99   1   0   0|   0  1516k| 244B  170B|   0     0 | 373  1575
  0   0  99   1   0   0|   0  1552k|  34k  500B|   0     0 | 410  1602
  0   0 100   0   0   0|   0  1556k| 126B  236B|   0     0 | 363  1527
  0   0  99   1   0   0|   0  1384k|  60B  170B|   0     0 | 349  1369
  0   0  99   1   0   0|   0  1440k|  13k  434B|   0     0 | 400  1513
  0   0 100   0   0   0|   0  1800k| 612B  170B|   0     0 | 418  1905
  0   0  99   0   0   0|   0  1484k| 246B  236B|   0     0 | 622  1568
  0   0  99   1   0   0|   0  1272k|  60B  170B|   0     0 | 347  1294
  0   0  99   1   0   0|   0  1624k| 126B  236B|   0     0 | 400  1815
  0   0  99   1   0   0|   0  1580k|  60B  170B|   0     0 | 358  1712
  0   0 100   0   0   0|   0  1536k|  22k  302B|   0     0 | 395  1583
  0   0 100   0   0   0|   0  1440k| 514B  368B|   0     0 | 383  1765
  0   0  99   1   0   0|   0  1596k|  28k  500B|   0     0 | 446  2151
看到从库的写只能达到每秒1.5M左右,IO性能不是很好,也印证了初步的推测。

那么问题来了, 

    要如何优化IO性能比较差的slave呢?

简单,本文做了如下两个参数的修改:

mysql> set global innodb_flush_log_at_trx_commit=2;
Query OK, 0 rows affected (0.00 sec)
mysql> set global sync_binlog=20 ;
Query OK, 0 rows affected (0.00 sec)

innodb_flush_log_at_trx_commit和sync_binlog这两个参数又是个啥?

innodb_flush_log_at_trx_commit

1. innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。

2. innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.

3. innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。

注意:

由于进程调度策略问题,这个“每秒执行一次 flush(刷到磁盘)操作”并不是标准意义上的保证100%的“每秒”。

sync_binlog

sync_binlog 的默认值是0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。

当sync_binlog =N (N>0) ,MySQL 在每写 N次二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。

注意:

如果启用了autocommit,那么每一个语句statement就会有一次写操作;否则每个事务对应一个写操作。mysql服务默认是autocommit打开的。

如上sync_binlog,autocommit,innodb_flush_log_at_trx_commit三个参数,详见从库mysql_slave设置如下:

mysql> show variables like '%sync_binlog%';+---------------+-------+| Variable_name | Value |+---------------+-------+| sync_binlog   | 0     |+---------------+-------+1 row in set (0.01 sec)
mysql>mysql> show variables like '%innodb_flush_log_at_trx_commit%';+--------------------------------+-------+| Variable_name                  | Value |+--------------------------------+-------+| innodb_flush_log_at_trx_commit | 1     |+--------------------------------+-------+1 row in set (0.00 sec)
mysql> show variables like '%autocommit%';+---------------+-------+| Variable_name | Value |+---------------+-------+| autocommit    | ON    |+---------------+-------+1 row in set (0.00 sec)

根据上述分析过程,修改如下值:

mysql> set global sync_binlog=20;
mysql> set global innodb_flush_log_at_trx_commit=2;

接下来,我们观察和验证从库同步情况

1. 使用dstat命令观察磁盘IO,下图可以看到从库的写有原来的每秒1.5M左右提升为4M以上,

[root@mysql ~]# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  0   0 100   0   0   0|  19k  686k|   0     0 |   0     0 | 231   648
  0   0  99   1   0   0|   0  4756k| 882B  462B|   0     0 | 601  6690
  0   0  99   1   0   0|   0  4208k| 430B  236B|   0     0 | 642  8771
  0   0  99   1   0   0|   0  4452k| 428B  170B|   0     0 | 607  7803
  0   0  99   1   0   0|   0  7964k|  26k  500B|   0     0 | 589  6835
  0   0  99   1   0   0|   0  3832k|1166B  170B|   0     0 | 368  2467
  0   0  99   1   0   0|   0  4584k|2042B  236B|   0     0 | 523  4632
  0   0  99   1   0   0|   0  4972k|1296B  170B|   0     0 | 661  9298
  0   0  99   1   0   0|   0  4792k|1046B  236B|   0     0 | 606  9634
  0   0  99   1   0   0|   0  5244k|3032B  212B|   0     0 | 745  9965
  0   0  99   0   0   0|   0  4648k| 796B  170B|   0     0 |1166    19k
  0   0  99   1   0   0|   0  4608k|  21k  434B|   0     0 | 827    14k
  0   0  99   0   0   0|   0  4552k|1858B  236B|   0     0 | 971    17k
  0   0  99   0   0   0|   0  4580k| 980B  170B|   0     0 | 936    17k
  0   0  99   1   0   0|   0  8332k|  21k  434B|   0     0 | 940    13k
  0   0  99   0   0   0|   0  4136k|1112B  236B|   0     0 |1112    20k
  0   0  99   0   0   0|   0  4940k| 796B  170B|   0     0 |1045    19k
  0   0  99   0   0   0|   0  4496k|  22k  500B|   0     0 | 951    15k
  0   0  99   0   0   0|   0  4652k| 862B  170B|   0     0 |1022    18k
  0   0  99   0   0   0|   0  5472k|1546B  236B|   0     0 | 950    15k
  0   0  99   0   0   0|   0  2616k|  20k  434B|   0     0 | 901    15k
  0   0  99   1   0   0|   0  9564k|2410B  170B|   0     0 | 958    14

2. 从库使用 show slave status \G,观察到Seconds_Behind_Master: 21202在持续缩小和主库的差距。Seconds_Behind_Master:由原来的30880降为21202,且在持续减少中。

mysql> show slave status \G
*************************** 1. row ***************************
               Slave_IO_State: Queueing master event to the relay log
                  Master_Host: 192.168.10.111
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000057
          Read_Master_Log_Pos: 214833221
               Relay_Log_File: relay-bin.00045
                Relay_Log_Pos: 28064325
        Relay_Master_Log_File: mysql-bin.000057
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
          Exec_Master_Log_Pos: 544925182
              Relay_Log_Space: 973436169
           Master_SSL_Allowed: No
        Seconds_Behind_Master: 21202
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 113306
                  Master_UUID: efd10b43-a43c-11e8-85d8-6c92bf7d9fd1
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Waiting for dependent transaction to commit
           Master_Retry_Count: 86400
           Retrieved_Gtid_Set: efd10b43-a43c-11e8-85d8-6c92bf7d9fd1:153917-55504200
            Executed_Gtid_Set: 838ad3df-a43d-11e8-8b02-6c92bf7daa8d:1,
efd10b43-a43c-11e8-85d8-6c92bf7d9fd1:1-54771730
                Auto_Position: 1
1 row in set (4.98 sec)

至此,Seconds_Behind_Master越来越打的问题得到解决。

相关文章:

Seconds_Behind_Master越来越大,主从同步延迟

问题现象 发现从库mysql_slave的参数Seconds_Behind_Master越来越大。已排除主从服务器时间不一致;那么主要就判断两点:是io thread慢还是 sql thread慢?先观察show slave status\G 。 判断3个参数(参数后面的值是默认空闲时候的…...

除法求值[中等]

一、题目 给你一个变量对数组equations和一个实数值数组values作为已知条件,其中equations[i] [Ai, Bi]和values[i]共同表示等式Ai / Bi values[i]。每个Ai或Bi是一个表示单个变量的字符串。另有一些以数组queries表示的问题,其中queries[j] [Cj, Dj…...

新时代商业市场:AR技术的挑战与机遇并存

随着科技的不断发展,增强现实(AR)技术逐渐成为当今社会的一个重要组成部分。AR技术能够将虚拟世界与现实世界相结合,为人们提供更加丰富、多样化的体验。在新时代的社会商业市场中,AR技术也正逐渐被应用于各种商业活动…...

RHEL8中ansible的使用

编写ansible.cfg和清单文件ansible的基本用法 本章实验三台RHEL8系统(rhel801,rhel802,rhel803),其中rhel801是ansible主机 这里要确保ansible主机能够解析所有被管理的机器,这里通过配置/etc/hosts来实现…...

【1.6计算机组成与体系结构】存储系统

目录 1.层次化存储结构2.Cache2.1 Cache的介绍2.2 局部性原理2.3 Cache应用 1.层次化存储结构 由 ⬆ CPU:寄存器。 快 ⬆ Cache:按内容存取(相联存储器)。 到 ⬆内存(主存):DRAM。 慢 ⬆ 外存(辅存&#…...

TCP/UDP 协议

目录 一.TCP协议 1.介绍 2.报文格式 ​编辑 确认号 控制位 窗口大小 3.TCP特性 二.TCP协议的三次握手 1.tcp 三次握手的过程 三.四次挥手 2.有限状态机 四.tcp协议和udp协议的区别 五.udp协议 UDP特性 六.telnet协议 一.TCP协议 1.介绍 TCP(Transm…...

如何正确理解和使用 Golang 中 nil ?

目录 指针中的 nil 切片中的 nil map 中的 nil 通道中的 nil 函数中的 nil 接口中的 nil 避免 nil 相关问题的最佳实践 小结 在 Golang 中,nil 是一个预定义的标识符,在不同的上下文环境中有不同的含义,但通常表示“无”、“空”或“…...

IDEA新建jdk8 spring boot项目

今天新建spring boot项目发现JDK版本最低可选17。 但是目前用的最多的还是JDK8啊。 解决办法 Server URL中设置: https://start.aliyun.com/设置完成后,又可以愉快的用jdk8创建项目了。 参考 https://blog.csdn.net/imbzz/article/details/13469117…...

Qt/C++音视频开发59-使用mdk-sdk组件/原qtav作者力作/性能凶残/超级跨平台

一、前言 最近一个月一直在研究mdk-sdk音视频组件,这个组件是原qtav作者的最新力作,提供了各种各样的示例demo,不仅限于支持C,其他各种比如java/flutter/web/android等全部支持,性能上也是杠杠的,目前大概…...

智安网络|企业网络安全工具对比:云桌面与堡垒机,哪个更适合您的需求

随着云计算技术的快速发展,越来越多的企业开始采用云计算解决方案来提高效率和灵活性。在云计算环境下,云桌面和堡垒机被广泛应用于企业网络安全和办公环境中。尽管它们都有助于提升企业的安全和效率,但云桌面和堡垒机在功能和应用方面存在着…...

Git忽略已经提交的文件

原理类似于 Android修改submodule的lib包名...

MVVM和MVC以及MVP的原理以及它们的区别

MVVM、MVC 和 MVP 都是前端架构模式,它们各自有不同的原理和特点。 MVC(Model-View-Controller) 原理:MVC 将应用程序分为三个部分:模型(Model)、视图(View)和控制器&a…...

WeChatMsg: 导出微信聊天记录 | 开源日报 No.108

Mozilla-Ocho/llamafile Stars: 3.5k License: NOASSERTION llamafile 是一个开源项目,旨在通过将 lama.cpp 与 Cosmopolitan Libc 结合成一个框架,将 LLM (Large Language Models) 的复杂性折叠到单个文件可执行程序中,并使其能够在大多数…...

Python学习之复习MySQL-Day3(DQL)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧!DQL简介基本查询查询多个/全部字段设置别名去除重复记录 条件查询条件查询介绍实例演示 聚合函数什么是聚合函数?常见的聚合函数实例演示 分组查询分组查询语法where 和 having 的区别实例演示 排序查询语法实…...

AI超级个体:ChatGPT与AIGC实战指南

目录 前言 一、ChatGPT在日常工作中的应用场景 1. 客户服务与支持 2. 内部沟通与协作 3. 创新与问题解决 二、巧用ChatGPT提升工作效率 1. 自动化工作流程 2. 信息整合与共享 3. 提高决策效率 三、巧用ChatGPT创造价值 1. 优化产品和服务 2. 提高员工满意度和留任率…...

SpringBoot集成websocket(5)|(使用OkHttpClient实现websocket以及详细介绍)

SpringBoot集成websocket(5)|(使用OkHttpClient实现websocket以及详细介绍) 文章目录 SpringBoot集成websocket(5)|(使用OkHttpClient实现websocket以及详细介绍)[TOC] 前言一、初始…...

Kafka-Kafka基本原理与集群快速搭建(实践)

Kafka单机搭建 下载Kafka Apache Download Mirrors 解压 tar -zxvf kafka_2.12-3.4.0.tgz -C /usr/local/src/software/kafkakafka内部bin目录下有个内置的zookeeper(用于单机) 启动zookeeper(在后台启动) nohup bin/zookeeper-server-start.sh conf…...

Elasticsearch 进阶(索引、类型、字段、分片、副本、集群等详细说明)-06

笔记来源:Elasticsearch Elasticsearch进阶 进阶-核心概念 索引Index 一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字…...

hive的分区表和分桶表详解

分区表 Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录,每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区,这样的查询效率会提高很多。 静态分区表基本语法 创建分区表 create table dept_p…...

verilog语法进阶-分布式ram

概述: FPGA的LUT查找表是用RAM设计的,所以LUT可以当成ram来使用,也并不是所有的LUT都可以当成ram来使用,sliceM的ram可以当成分布式ram来使用,而sliceL的ram只能当成rom来使用,也就是只能读,不能写&#x…...

HarmonyOS使用HTTP访问网络

HTTP数据请求 1 概述 日常生活中我们使用应用程序看新闻、发送消息等,都需要连接到互联网,从服务端获取数据。例如,新闻应用可以从新闻服务器中获取最新的热点新闻,从而给用户打造更加丰富、更加实用的体验。 那么要实现这样一种…...

GZ015 机器人系统集成应用技术样题1-学生赛

2023年全国职业院校技能大赛 高职组“机器人系统集成应用技术”赛项 竞赛任务书(学生赛) 样题1 选手须知: 本任务书共 25页,如出现任务书缺页、字迹不清等问题,请及时向裁判示意,并进行任务书的更换。参赛队…...

计算机毕业设计 基于SpringBoot的日常办公用品直售推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

uniapp:使用fixed定位,iOS平台的安全区域问题解决

manifest.json > 添加节点 "safearea": { //iOS平台的安全区域"background": "#1C1E22","backgroundDark": "#1C1E22", // HX 3.1.19支持"bottom": {"offset": "auto"} },已解决&#xff…...

三层交换机原理与配置

文章目录 三层交换机原理与配置一、三层交换技术概述二、传统的 MLS三、基于CEF 的MLS1、转发信息库(FIB)2、邻接关系表3、工作原理: 四、三层交换机的配置1、三层交换机配置命令2、三层交换机配置步骤 三层交换机原理与配置 一、三层交换技…...

Linux-----5、文件系统

# 文件系统 # 终端的基本操作 ㈠ 打开多个终端 ㈡ 快速清屏 新建标签:command T 新建窗口:command N 关闭标签:command Q 关闭窗口:command W 放大:command 缩小:command - 清屏&#xff…...

电脑自动关机怎么设置?

电脑自动关机怎么设置?如果你是一名上班族,工作忙起来很多事情都会忘记做,有时候忙到很晚后紧急下班,就会忘记给电脑关机,电脑如果经常不关机,那么电脑就会超负荷的运转,大家都知道电脑的寿命是…...

MS5602视频 8 位数模转换器,可替代TLC5602

MS5602 是低功率、超高速视频数模转换器。 MS5602 以 DC 至 20MHz 的采样速率,将数字信号转换成模拟信号。由于高速工作 的特性, MS5602 适合于数字电视、电脑视频处理及雷达信号处 理等数字视频应用。 MS5602 工作在 -40C 至 85C 的温度范围内 …...

Logistic Regression——逻辑回归

1. 为什么需要逻辑回归 在前面学习的线性回归中,我们的预测值都是任意的连续值,例如预测房价。除此之外,还有一个常见的问题就是分类问题,而逻辑回归是一个解决分类问题的模型,其预测值是离散的。 分类问题又包括…...

跟随鼠标动态显示线上点的值(基于Qt的开源绘图控件QCustomPlot进行二次开发)

本文为转载 原文链接: 采用Qt快速绘制多条曲线(折线),跟随鼠标动态显示线上点的值(基于Qt的开源绘图控件QCustomPlot进行二次开发) 内容如下 QCustomPlot是一个开源的基于Qt的第三方绘图库,能…...

响应式网站用什么软件做效果/广州百度竞价开户

最近有一些烦,虚拟机跑代码,跑着跑着存储不够,我就去扩大磁盘,结果虚拟机崩了,试了一上午的修复办法,仍然无法修复,于是只能重装虚拟机,配置各种环境,这里总结一下Ubuntu…...

极路由wordpress/友链互换平台推荐

去年因《陈情令》成为新晋顶流的肖战,这半年多来真是热搜不断。近期又上了热搜了的他却令网友大吃一惊:前不久还是当红明星,怎么突然被全网黑了?而且连代言都一并被抵制?近日,关于“肖战粉丝举报Ao3”的事件…...

信息技术做网站/郑州网站营销推广公司

...

企业网站源码 多语言/泉州百度网络推广

一个人北漂经历了迷茫, 彷徨,三年来忽视了很多东西,从不知干什么, 想要干什么,不明白干什么,脱离了学校那种单一思维, 拥有社会想要成为思维,提升自己,去认识更有能量的人…...

购买保险的网站/常见的网站推广方式有哪些

Python is eating the world. 这篇关于Python长文火了。 从Python的创建过程,到Python成为一个无所不在的语言,究竟经历了一个怎样的过程? 美国科技媒体ZDNet记者Nick Heath,详细呈现了Python作为一款风靡全球的编程语言的发展…...

做网站定制的一般什么价位/宁德网站建设制作

目录 文件的三种打开模式一.文件的打开模式之r模式二.文件打开模式之w模式三、文件打开模式之a模式四、文件打开读取二进制文件的三种打开模式 文件操作的基础模式有三种(默认的操作模式为r模式): r模式为readw模式为writea模式为append文件读…...