zoukankan      html  css  js  c++  java
  • MySQL主从延时监控

    MySQL主从延时监控

    一、什么是主从延时?

    主库发生了操作,从库"很久"才跟上来。
    

    二、主从延时怎么监控?

    Seconds_Behind_Master: 0   #从库落后于主库的时间
    PS:有或者没有延时的情况。等于0,不代表没有延时。
    
    评估主从延时更加精确的指标是,延时了多少日志量。
    主库执行的日志量,从库执行的日志的对比。
    日志量:
       主库binlog位置点
       从库:relay执行的位置点
    

    三、如何计算日志量

    单位是字节

    [root@slave1 mysql]# cat relay-log.info 
    7							#来自于那个主库?
    ./slave1-relay-bin.000005	#relay执行到的位置点(两行)
    360
    
    mysql-bin.000004			#对应主库的日志位置点
    679121
    
    0	#不管
    0
    1
    

    四、主从复制延迟原因

    4.1、主库

    外部:网络,硬件配置,主库业务繁忙,从库太多
    主库业务繁忙:
    1.拆分业务((分布式):组件分离,垂直,水平
    2.大事务的拆分。比如,1000w业务拆分为20次执行。
    
    内部:
    1.二进制日志更新问题:
    解决方案:
    sync binlog=1
    
    2.问题: ―5.7之前的版本,没有开GTID之前,主库可以并发事务,但是dump传输时是串行。所以会导致,事务量,大事务时会出现比较严重延时。
    解决方案:
    5.6+版本,手工开启gtid,事务在主从的全局范围内就有了唯一性标志。
    5.7+版本,无需手工开启,系统会自动生成匿名的GTID信息
    有了GTID之后,就可以实现并发传输binlog。
    但是,即使有这么多的优秀特性,我们依然需要尽可能的减少大事务,以及锁影响
    
    判断主库传输不及时:
    	1. seconds behind master
    	2.主库:show master status; 从库:show slave status G
    

    4.2、从库

    外部:网络,从库配置低,参数设定。
    
    内部:
    Io线程:
    	写relay-log -->Io 性能。
    sQL线程:
    	回放sQL默认在非GTID模式下是串行的解决方案:
    	1.开启GTID2.串行改并行
    	5.6+ GTID: database级别,基于库级别sQL线程并发。
    	5.7+ GTID: Logic clock逻辑时钟。保证了同库级别下的事务顺序问题。所以可以理解为基于事务级别的并发回放。
    

    以后生产推荐版本:

    5.6.34+     以上
    5.7.17+		以上
    8.0.17+		以上
    
  • 相关阅读:
    [国家集训队]墨墨的等式(同余最短路)
    [洛谷P2575]高手过招
    [CSP校内集训]rank
    杀人游戏(tarjan思维好题)
    骑士游戏(spfa好题)
    机房模拟测试4:计数类dp+水题+树上计数
    机房测试模拟2:模拟+数学+数位dp
    机房测试11:最小生成树(最小生成树+二分)
    机房测试模拟1(day2):矩阵+树上贪心+bfs+状压
    机房测试16:字符串专题(AC自动机+dp+kmp)
  • 原文地址:https://www.cnblogs.com/hsyw/p/14022349.html
Copyright © 2011-2022 走看看