加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql复制超时排查

发布时间:2022-07-04 18:46:55 所属栏目:MySql教程 来源:互联网
导读:主从延时如果排查? 1. show slave statusG,看一下relay_master_log_file exec_master_log_pos数值有没有变化(如果是GTID复制也可以看executed_gtid_set的事物号有没有增长 ),如果一直不变化,说明有大事物,导致sql_thread线程hang住,这个时候需要
  主从延时如果排查?
 
  1. show slave statusG,看一下relay_master_log_file & exec_master_log_pos数值有没有变化(如果是GTID复制也可以看executed_gtid_set的事物号有没有增长 ),如果一直不变化,说明有大事物,导致sql_thread线程hang住,这个时候需要查看主库的binlog,看一下是什么事物:
 
   mysqlbinlog -v --base64-output=decode-rows --start-position= exec_master_log_pos   relay_master_log_file | less
 
  然后等大事物结束或者回滚;
 
  这次事物结束后,如果下次从库不能接受这样延时,怎么办,有什么根本的解决方法?
 
  (1)把从库对读要求比较高的业务切换到主库上;
 
  (2)以后更新大事物拆分成多个小事物,比如说一次更新20万条改为一次更新10万条;
 
  2.  如果relay_master_log_file & exec_master_log_pos数值增长很慢,怎么办?
 
  (1)解析对应的binlog: mysqlbinlog -v --base64-output=decode-rows --start-position= exec_master_log_pos   relay_master_log_file | less
 
  查看对应的表,看看表有没有主键,索引等结构
 
  (2)检查系统是不是过载cpu,memory,io,
 
  io可以通过工具iotop和pt-ioprofile查看
 
  如果发现是mysql库下的slave_relay_log_info.ibd文件占用IO很高,可以考虑调大sync_relay_log_info,让这个文件同步不要太频繁。
 
  cpu可以通过top命令查看:
 
  如果user比较高,可以show processlist查看,慢日志,有没有大量的排序,主要是sql语句
 
  如果sys很高的话,一般来说,因为:
 
  1、发生swap
 
  2、数据库内发生严重的锁等待
 
  3、用了ssd等设备,产生大量中断,或者网卡中断(cpu中断不均衡)
 
  4、MySQL里频繁创建连接及关闭
 
  5、频繁用到timestamp列,且time_zone=SYSTEM
 
  memory:
 
  free -gt
 
  vmstat
 
  看看mysql的errorlog,主从的server-id是否不一样
 
  如何查看网卡是否连接:
 
  ifconfig |grep up
 
  dmesg|grep eth
 
  以上方法都不行的话,可以尝试其他方法:
 
  使用工具perf top
 
  pstack `pidof mysqld`
 
  ipmitool
 
  硬件方面raid卡等

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读