故障案例:slave延迟很大

案例1:lvm机型,从库创建完成后,主库qps 2w,从库6k多。从某个时间点开始延迟在缓慢增加,一直涨到7w多秒才发现去处理;从库io的util很高

故障原因:查看配置发现这个从库开启了log_slave_updates,一直在产生binlog,当把这个参数禁用或者设置sync_binlog=0以后,util立马就降下来了,同步延迟也就慢慢变小了直到为0,此前已经发现多次使用lvm逻辑卷管理或者SSD的机器的udb只要开启了这个sync_binlog=1,好像磁盘util都很高,也没有深究为什么。

案例2:slave延迟一直在增大,从库和主库的qps很低,io都很低,从库cpu 100%

故障原因:因为从库执行SQL是单线程的,所以只能利用一个CPU的资源,当cpu使用率到100%,整个库都卡住了,不管什么操作都很慢;发现从库上只执行一个简单的主键更新操作,所以很奇怪为什么主键更新还这么慢

ID: 6933

USER: system user

HOST:

DB: gangao

COMMAND: Connect

TIME: 457156

STATE: Updating

INFO: UPDATE`STK_DAILYQUOTEFA`SET`ID`=0x3631323538393739303330,`SECUCODE`=0x3237353233,`TRADINGDAY`=‘2003-03-18 00:00:00‘,`TRADINGSTATE`=0x31,`PREVCLOSINGPRICEBA`=0x312E363238,`OPENINGPRICEBA`=0x312E36323633,`HIGHESTPRICEBA`=0x312E36333332,`LOWESTPRICEBA`=0x312E36303734,`CLOSINGPRICEBA`=0x312E363136,`ENTRYTIME`=‘2015-07-24
15:41:13‘,`UPDATETIME`=‘2015-07-24 15:41:13‘,`GROUNDTIME`=‘2015-07-24 15:41:13‘,`UPDATEID`=0x3631323538393739303330,`RESOURCEID`=0x43616C63,`RECORDID`=NULL WHERE`ID`=0x3631323538393739303330

后来发现这里的ID是0x3631323538393739303330十六机制表示的字符串

普通10进制int值时的查询计划

mysql> explain select * from gangao.STK_DAILYQUOTEFA where id = 60737669922;

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

| id | select_type | table            | type  | possible_keys | key     | key_len | ref   | rows | Extra |

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

|  1 | SIMPLE      | STK_DAILYQUOTEFA | const | PRIMARY       | PRIMARY | 8       | const |    1 |       |

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

1 row in set (2.84 sec)

注意这里转过去其实是字符,而问题就是出在这里

mysql> select hex(‘60737669922‘);

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

| hex(‘60737669922‘)     |

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

| 3630373337363639393232 |

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

1 row in set (0.00 sec)

mysql> select 0x3630373337363639393232;

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

| 0x3630373337363639393232 |

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

| 60737669922              |

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

1 row in set (0.00 sec)

这里再解析执行计划,发现找不到该记录

mysql> explain select * from gangao.STK_DAILYQUOTEFA where id = 0x3630373337363639393232;

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

| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra                                               |

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

|  1 | SIMPLE      | NULL  | NULL | NULL          | NULL | NULL    | NULL | NULL | Impossible WHERE noticed after reading const tables |

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

1 row in set (3.10 sec)

实际上记录是存在的

mysql> select * from gangao.STK_DAILYQUOTEFA where id = 60737669922;

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

| ID          | SECUCODE | TRADINGDAY          | TRADINGSTATE | PREVCLOSINGPRICEBA | OPENINGPRICEBA | HIGHESTPRICEBA | LOWESTPRICEBA | CLOSINGPRICEBA | ENTRYTIME           | UPDATETIME          | GROUNDTIME          | UPDATEID    | RESOURCEID | RECORDID |

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

| 60737669922 |    20041 | 2009-06-05 00:00:00 | 1            |            33.9315 |        33.8687 |        35.8897 |       33.7851 |        35.2277 | 2015-07-13 15:40:01 | 2015-07-13 15:40:01 | 2015-07-13 15:40:01 | 60737669922 | Calc       | NULL     |

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

1 row in set (1.94 sec)

但是转成这16进制表示的字符形式就出不来结果了

mysql> select * from gangao.STK_DAILYQUOTEFA where id = 0x3630373337363639393232;

Empty set (0.40 sec)

而这个数值真正的16进制数值应该是

mysql> select hex(60737669922);

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

| hex(60737669922) |

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

| E243F4B22        |

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

1 row in set (0.00 sec)

这里需要加上0才行

mysql> select 0xE243F4B22+0;

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

| 0xE243F4B22+0 |

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

|   60737669922 |

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

1 row in set (0.00 sec)

而这时再解析

mysql> explain select * from gangao.STK_DAILYQUOTEFA where id = 0xE243F4B22+0;

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

| id | select_type | table            | type  | possible_keys | key     | key_len | ref   | rows | Extra |

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

|  1 | SIMPLE      | STK_DAILYQUOTEFA | const | PRIMARY       | PRIMARY | 8       | const |    1 |       |

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

1 row in set (2.83 sec)

mysql> select * from gangao.STK_DAILYQUOTEFA where id = 0xE243F4B22+0;

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

| ID          | SECUCODE | TRADINGDAY          | TRADINGSTATE | PREVCLOSINGPRICEBA | OPENINGPRICEBA | HIGHESTPRICEBA | LOWESTPRICEBA | CLOSINGPRICEBA | ENTRYTIME           | UPDATETIME          | GROUNDTIME          | UPDATEID    | RESOURCEID | RECORDID |

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

| 60737669922 |    20041 | 2009-06-05 00:00:00 | 1            |            33.9315 |        33.8687 |        35.8897 |       33.7851 |        35.2277 | 2015-07-13 15:40:01 | 2015-07-13 15:40:01 | 2015-07-13 15:40:01 | 60737669922 | Calc       | NULL     |

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

1 row in set (4.25 sec)

所以问题就出在客户将10进制整数123456转成字符串‘123456‘的16进制形式处理了,导致了索引根本没用上,查询缓慢,甚至一直在做无用功,根本不存在这些值。

案例3:主库上只有write操作,主库的io比较低,从库io很高,主库不存在峰值。

原因分析:后来对比主从的配置,发现主库的innodb_flush_log_at_trx_commit设置为2,而从库上innodb_flush_log_at_trx_commit是1,后来将从库也调为2或者0就没问题,这个参数具体的含义不多说,下图是没调整前,主从的io对比

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-02 22:45:55

故障案例:slave延迟很大的相关文章

slave延迟很大优化方法

一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在slave上,复制线程只有一个sql thread用于binlog的apply,所以难怪slave在高并发时会远落后master. ORACLE MySQL 5.6版本开始支持多线程复制,配置选项 slave_parallel_workers 即可实现在slave上多线程并发复制.不过,它只能支持一个实例下多个 da

Slave延迟很大的优化方法总结(MySQL优化)

[http://www.cstor.cn/textdetail_9146.html] 一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在slave上,复制线程只有一个sql thread用于binlog的apply,所以难怪slave在高并发时会远落后master ORACLE MySQL 5.6版本开始支持多线程复制,配置选项 slave_parallel_wor

大数据公司挖掘数据价值的49个典型案例!信息量很大

大数据公司挖掘数据价值的49个典型案例 对于企业来说,100条理论确实不如一个成功的标杆有实践意义,本文的主旨就是寻找"正在做"大数据的49个样本. 力图从企业运营和管理的角度,梳理出发掘大数据价值的一般规律:一是以数据驱动的决策,主要通过提高预测概率,来提高决策成功率;二是以数据驱动的流程,主要是形成营销闭环战略,提高销售漏斗的转化率;三是以数据驱动的产品,在产品设计阶段,强调个性化;在产品运营阶段,则强调迭代式创新. 上篇 天然大数据公司的各种套餐 从谷歌.亚马逊.Facebook

风险案例-29期- 项目管理投入不够, 缺乏项目统筹全局观,使项目成本、进度、质量存在很大风险

典型案例: A公司承接了某小型项目,公司任命刚刚通过公司内部项目经理考核认证的王工为该项目的项目经理.目前项目已进行到了详细设计阶段,在项目实施过程中发现, 项目经理对于技术调研的精力投入较多,导致管理工作不充分,且预计的设计评审工作无法有效实施.从目前情况来看项目经理仅发挥了Leader的作用,无法 站在项目全局高度进行统筹管理,使项目成本.进度.质量存在很大的风险. 风险的概述: 项目管理投入不够, 缺乏项目统筹全局观,使项目成本.进度.质量存在很大风险. 推荐处置措施如下: 预防建议: 1

优化mysql主从下的slave延迟问题

一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在slave上,复制线程只有一个sql thread用于binlog的apply,所以难怪slave在高并发时会远落后master. ORACLE MySQL 5.6版本开始支持多线程复制,配置选项 slave_parallel_workers 即可实现在slave上多线程并发复制.不过,它只能支持一个实例下多个 da

slave延迟原因及优化方法

转载:http://imysql.com/2015/04/12/mysql-optimization-case-howto-resolve-slave-delay.shtml 一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在slave上,复制线程只有一个sql thread用于binlog的apply,所以难怪slave在高并发时会远落后master. ORACL

KVM部署LVS集群故障案例一则

一.故障现象 KVM部署LVS(Linux Virtual Server)集群后,能够单独以HTTP方式访问RS(Real Server)的实际IP,但无法通过VIP(Virtual IP)访问. 二.故障分析过程   1.简化架构   在原部署环境中,采用的架构是LVS的DR(Direct Return)模式,如下图所示: 为了便于故障排查,我们简化为 也就是在2台宿主机上,各保留一个虚拟机,角色分别是LVS的Director(调度器)和RS. 该架构中的服务器(及虚拟机)的IP和MAC地址如

[转载]常见slave 延迟原因以及解决方法

一  序言在运维线上M-M 架构的MySQL数据库时,接收的比较多关于主备延时的报警: 点击(此处)折叠或打开 check_ins_slave_lag (err_cnt:1)critical-slavelag on ins:3306=39438 相信slave 延迟是MySQL dba 遇到的一个老生长谈的问题了.先来分析一下slave延迟带来的风险  1. 异常情况下,主从HA无法切换.HA 软件需要检查数据的一致性,延迟时,主备不一致.   2. 备库复制hang会导致备份失败(flush

mysql5.6启动占用内存很大的解决方法

vps的内存为512M,安装好nginx,php等启动起来,mysql死活启动不起来看了日志只看到对应pid被结束了,后跟踪看发现是内存不足被killed; 调整my.cnf 参数,重新配置(系统默认配置太高直接占用400M内存,小玩家玩不起呢)即可 performance_schema_max_table_instances=200 table_definition_cache=200 table_open_cache=128 下面附一个相关的my.cnf配置文件的说明 [client] po