现网一个产品报警主从延时,到备机上检查,果然延时(Seconds_Behind_Master)越来越严重,但是Relay_Log_pos值也是慢慢变大的,说明备机在跟主机数据,但跟得比较慢,特别是有System Lock。分析一下。

一、检查

mysql> show processlist;

+-------+-------------+--------------------+------+-------------+--------+-----------------------------------------------------------------------------+------------------+

| Id | User | Host | db | Command | Time | State | Info |

+-------+-------------+--------------------+------+-------------+--------+-----------------------------------------------------------------------------+------------------+

| 1 | system user | | NULL | Connect | 171318 | Waiting for master to send event | NULL |

| 2 | system user | | NULL | Connect | 312206 | Slave has read all relay log; waiting for the slave I/O thread to update it | NULL |

| 3 | system user | | NULL | Connect | 306 | Waiting for an event from Coordinator | NULL |

| 4 | system user | | NULL | Connect | 10587 | System Lock | NULL |

| 5 | system user | | NULL | Connect | 126 | Waiting for an event from Coordinator | NULL |

| 6 | system user | | NULL | Connect | 0 | Waiting for an event from Coordinator | NULL |

| 13 | repl | 192.168.17.59:61674 | NULL | Binlog Dump | 171281 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL |

| 74870 | root | localhost | NULL | Query | 0 | init | show processlist |

+-------+-------------+--------------------+------+-------------+--------+-----------------------------------------------------------------------------+------------------+

9 rows in set (0.00 sec)

mysql> show slave status \G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Log_File: mysql-bin.000057

Read_Master_Log_Pos: 792576413

Relay_Log_File: relay-bin.000170

Relay_Log_Pos: 381505193

Relay_Master_Log_File: mysql-bin.000057

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Exec_Master_Log_Pos: 792576413

Relay_Log_Space: 561858267

Until_Condition: None

Seconds_Behind_Master: 10627

Master_UUID: 41690a50-296b-11e6-a0f1-525400fd6bba

Master_Info_File: /data/mysql/datanode1/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: System Lock

Master_Retry_Count: 86400

1 row in set (0.00 sec)

二、定位

[root@db02 datanode1]# mysqlbinlog --no-defaults -v relay-bin.000170 --start-position=381505193 --base64-output=decode-rows |more

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

DELIMITER /*!*/;

# at 381505193

#161124 14:29:29 server id 53 end_log_pos 796951500 CRC32 0x490aa291 Querythread_id=96281495exec_time=0error_code=0

SET TIMESTAMP=1479968969/*!*/;

SET @@session.pseudo_thread_id=96281495/*!*/;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

SET @@session.sql_mode=1075838976/*!*/;

SET @@session.auto_increment_increment=3, @@session.auto_increment_offset=1/*!*/;

/*!\C utf8 *//*!*/;

SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

BEGIN

# at 381507211

#161124 14:29:29 server id 53 end_log_pos 796953659 CRC32 0x9c5e6005 Update_rows: table id 11108 flags: STMT_END_F

### UPDATE `db_test`.`tbl_user_log`

### WHERE

### @1=228856

### @2='test_mobi'

### @3='2346150430'

### @4='2016-06-02 14:34:25'

### @5='2016-11-24 14:23:34'

### @6=NULL

### @7=0

### @8=0

### @9=2709

### @10='1.1.1'

### @11='client'

### @12=NULL

### @13='2016-06-24 21:45:22'

### @14=282

### @15='userinfo_sys'

### SET

### @1=228856

### @2='test_mobi'

### @3='2346150430'

### @4='2016-06-02 14:34:25'

### @5='2016-11-24 14:29:29'

### @6=NULL

### @7=0

### @8=0

### @9=2710

### @10='1.1.1'

### @11='client'

### @12=NULL

### @13='2016-06-24 21:45:22'

### @14=282

### @15='userinfo_sys'

# at 381507429

#161124 14:29:29 server id 53 end_log_pos 796953690 CRC32 0x7eec6df7 Xid = 2585781884

COMMIT/*!*/;

三、查看打开的表

mysql> show open tables;

Database Table In_use Name_locked

| db_test | tbl_1 | 0 | 0 |

| db_test | tbl_user_log | 1 | 0 |

| db_test | tbl_2 | 0 | 0 |

3 rows in set (0.00 sec)

四、分析排查

基本可以定位是这个大批量的update导致的备机延时。这个tbl_user_log表是建了Btree索引的,索引的数据也是比较均匀分散的,但是上面没有主键或者唯一索引。该表有300多万数据,通过观察,slave上的update在relay回放时是很慢的,索引并没起作用,类似全表扫描。遂在该表上建立主键,如果备机延时比较久了,可以通过忽略记录binglog的方式在主备上加个主键操作。

主机上:

set session sql_log_bin=0;

alter table tbl_user_log add primary key(id);

set session sql_log_bin=1;

备机上:

set session sql_log_bin=0;

alter table tbl_user_log add primary key(id);

set session sql_log_bin=1;

五、注意总结

通过对该表添加主键的方式后,备机过了几分钟就把落后几个小时的数据给追回来了。后续对上线的表要做好审计,mysql的innodb表一定得要有主键,设置sql_log_bin时不要加global参数。

mysql slave 'system user' locked_Mysql的slave lags一例相关推荐

  1. mysql slave是什么_创建slave的搜索结果-阿里云开发者社区

    Rainbond部署Mysql主从集群应用说明 Mysql主从同步原理 1)在Slave 服务器上执行sart slave命令开启主从复制开关,开始进行主从复制. 2)此时,Slave服务器的IO线程 ...

  2. mysql配置master_mysql 主从配置(master/slave)

    1.  在每台服务器上创建复制账号(也可以只在master上创建用户,这里配置两个是为了方便以后切换) 备库运行的I/O县城需要建立一个到主库的TCP/IP连接,所以必须在主库创建一个用户,并赋予合适 ...

  3. mysql 查看slave状态_解读show slave status 命令判断MySQL复制同步状态

    解读show slave status 命令判断MySQL复制同步状态 1. show slave status命令可以显示主从同步的状态 MySQL> show slave status \G ...

  4. mysql slave_pending_jobs_size_max_MySQL:关于Wating for Slave workers to free pending events等待...

    ###一.问题来源 这是一位朋友给我的一个截图,说show slave status一直处于Wating for Slave workers to free pending events状态,这个库是 ...

  5. system+执行mysql命令_Windows环境下通过MySQL以SYSTEM身份执行系统命令 -电脑资料

    前段时间出了两个关于MySQL的漏洞<MySQL CREATE FUNCTION功能mysql.func表允许注入任意函数库漏洞>.<MySQL CREATE FUNCTION功能l ...

  6. MySQL服务中断后重启失败及解决办法(个例)

    转载请标明出处^_^ 原文首发于:https://www.zhangruibin.com 本文出自于:RebornChang的博客 MySQL服务中断后重启失败及解决办法(个例) Starting M ...

  7. 使用MySQL进行数据分析——以淘宝用户数据为例

    使用MySQL进行数据分析--以淘宝用户数据为例 1. 背景介绍 本文主要是练习使用 mysql 进行数据分析,结合 excel 进行可视化分析,数据来源为阿里云天池的淘宝用户数据集,本数据集(Use ...

  8. 从Mysql slave system lock延迟说开去

    本文主要分析 sql thread中system lock出现的原因,但是笔者并明没有系统的学习过master-slave的代码,这也是2018年的一个目标,2018年我都排满了,悲剧.所以如果有错误 ...

  9. Linux下基于 Docker 搭建 MySQL 主从复制(1 Master+2 Slave)

    1.准备环境 CentOS   7.2 64位 (CentOS-7-x86_64-DVD-1511.iso) MySQL   10.244.87.144/library/mysql5.7/centos ...

最新文章

  1. python replace函数_Python3 replace()函数使用方法
  2. 什么是java多线程_什么是java多线程,java多线程的基本原理?
  3. 第十六届全国大学生智能车东北赛区线上比赛时间与直播信息
  4. Angular2.0 基础: User Input
  5. 如何判断对象是否存活之根搜索算法
  6. P1971 [NOI2011]兔兔与蛋蛋游戏
  7. 批量添加PDF帐号目录
  8. 高合HiPhi Z,参透豪华电动车的终极奥义?
  9. android 物联网 pdf,android复习资料(物联网141).pdf
  10. Redis基础知识详解(非原创)
  11. Python代码自动转成C++代码
  12. 铁通玩跑跑卡丁车经常出现服务器无响应之解决办法
  13. ptt评论量子计算机,PTT网友热议Nuguri替补:打野下路状态都拉跨不换,先换上路??...
  14. 《千字文》 梁•周兴嗣
  15. 【Linux】【操作】Linux操作集锦系列之一——定时任务
  16. codeforces 869 E. The Untended Antiquity(树状数组)
  17. python_操作MySQL 初解 之__类方法调用并 增-删-改-查
  18. 101. Symmetric Tree (C语言)
  19. 记录一次租房经历一(1)
  20. 【Android】BoardcastReceiver简介

热门文章

  1. 考过HCIP入职心仪公司,分享华为认证学习经历及心得
  2. 自定义小部件Widget的探讨
  3. htc m8什么时候更新Android 6.0,速度够快 港版HTC M8获Android 6.0更新
  4. 【Flutter】----学习笔记1(1~5)
  5. JavaEE与云服务知识概括
  6. 360全景偏移调整_360全景倒车系统安装及调试细节说明
  7. vue入门之04-生命周期 数据共享
  8. Unity官方录屏插件Unity Recorder的简单使用
  9. woed未响应文件没保存,解决办法
  10. Android_GestureDetector手势滑动使用