• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySQL数据延迟跳动的问题解决

    今天分析了另外一个关于数据库延迟跳动的问题,也算是比较典型,这个过程中也有一些分析问题的方法和技巧工参考。

    首先在高可用检测中,有一套环境的检测时断时续,经过排查发现是数据库产生了延迟,在登录到从库show slave status查看,会发现Seconds_behind_master的值是不断跳动的,即从0~39~0~39这样的频率不断跳动,让人很搓火。

    查看数据库的相关日志发现竟然没有任何可以参考的日志记录,怎么分析这个问题呢,我们先来复现,于是我按照节奏抓取了3次问题出现的日志,即通过show slave status连续监测,抓取show slave status输出的结果保存下来,这样我们就得到了一个问题发生过程中的偏移量变化,而这个变化则是在SQLThread在回放过程中产生的问题。

    比如下面的一段输出,我截取的是Slave端的relay log进行分析,相应的字段为Relay_Log_Pos

    Slave_IO_State: Waiting for master to send event
             Master_Host: xxxx
             Master_User: dba_repl
             Master_Port: 4306
            Connect_Retry: 60
           Master_Log_File: mysqlbin.000044
         Read_Master_Log_Pos: 386125369
            Relay_Log_File: slave-relay-bin.000066
            Relay_Log_Pos: 386125580
        Relay_Master_Log_File: mysqlbin.000044

    所以很快得到了偏移量的变化情况:385983806 ,386062813 ,386125580

    接着我使用mysqlbinlog开始分析这些日志过程中的明细,根据如下的命令可以很快得到转储的日志中相关的表有3张。

    # grep INSERT relaylog_xxxx.dump |awk '{print $3 " " $4}'|sed 's/INTO//g'|sort|uniq
     act_action_exec_info
     act_join_desc
     dic_subsidy_marketing_querylog_202008
     

    我逐步分析了每张表的数据操作情况,得到的信息还是比较有限,继续做更进一步的分析,比如我们分析一下整个日志中的事务量大小:

    # mysqlbinlog slave-relay-bin.000066 | grep "GTID$(printf '\t')last_committed" -B 1 \
    
    >                   | grep -E '^# at' | awk '{print $3}' \
    
    >                   | awk 'NR==1 {tmp=$1} NR>1 {print ($1-tmp);tmp=$1}' \
    
    >                   | sort -n -r | head -n 100
    mysqlbinlog: [Warning] unknown variable 'loose-default-character-set=utf8'
    5278
    5268
    5268
    5268
    5253
    5253
    5253
    5253
    5253

    可以看到是5K左右,算是比较大了,而这些额外的信息从哪里获得呢,我在主库开启了general_log,这样就能够得到更细粒度的操作日志了。

    进一步分析发现,整个业务使用了显示事务的方式:SET autocommit=0,整个事务中包含了几个大SQL,里面存储了很多操作日志明细,而且在事务操作过程中还基于Mybatis框架调用了多次select count(1) from xxx的操作。

    经过和业务沟通也基本明确了以上问题。

    以上就是MySQL数据延迟跳动的问题解决的详细内容,更多关于MySQL数据延迟跳动的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • 如何解决mysql insert乱码的问题
    • 如何解决mysql无法关闭的问题
    • 解决MySQL数据库意外崩溃导致表数据文件损坏无法启动的问题
    • 一文解决django 2.2与mysql兼容性问题
    • 浅谈mysql导出表数据到excel关于datetime的格式问题
    • 快速解决mysql导数据时,格式不对、导入慢、丢数据的问题
    • 快速解决mysql导出scv文件乱码、蹿行的问题
    • Docker的MySQL容器时区问题修改
    • pyMySQL SQL语句传参问题,单个参数或多个参数说明
    • MySQL 5.7.30 安装与升级问题详细教程
    上一篇:MySQL循环插入千万级数据
    下一篇:超详细MySQL使用规范分享
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MySQL数据延迟跳动的问题解决 MySQL,数据,延迟,跳动,的,