故障案例 | 慢SQL引发MySQL高可用切换排查全过程

MySQL之高可用性终极实践:故障转移与架构冗余设计 高可用性架构的构建是一个系统性工程,需综合考虑业务需求、技术成本与风险承受能力。通过主备复制结合自动化工具(如MHA)可快速实现基础高可用,而多主集群方案则适用于对一致性与扩展性要求极高的场景。在实践中,需定期进行故障演练,完善监控体系,并建立应急响应流程。未来,随着云原生技术的发展,容器化部署与自动化运维将进一步提升MySQL高可用性的实现效率,降低人工干预成本。写作不易,每一个架构设计和代码示例都凝聚了对高可用性的深入理解。 阅读详情

作者:梁行 万里数据库DBA,擅长数据库性能问题诊断、事务与锁问题的分析等,负责处理客户MySQL日常运维中的问题,对开源数据库相关技术非常感兴趣。

  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

一、现象说明

在排查问题时发现MySQL主备做了切换,而查看MySQL服务是正常的,DBA也没有做切换操作,服务器也无维护操作,万幸的是业务还没有受到大的波及。这到底是是为什么呢?

假设原主服务器地址为:172.16.87.72,原备主服务器地址为:172.16.87.123。

二、排查思路

通过监控查看MySQL的各个指标 查看双主(keepalived)服务切换日志 MySQL错误日志信息

三、问题排查

3.1 通过监控系统查看MySQL监控指标,判断故障发生的具体时间(通过流量判断大致切换时间点)

通过监控查看现在主库MySQL(支撑业务)的监控指标,看一天的、十五天的 (以每秒查询数量速率为例)

file

发现从22号开始陡增,初步怀疑,可能22号发生了主备切换,再看一下备库的折线图,进一步确认 查看双主(keepalived)服务切换日志,确定主从切换时间

3.2 查看keepalived判断为什么会做主从切换

先登录87.72查看keepalived的切换日志,日志信息如下:注:系统是ubuntu而且keepalived没有指定输出日志输出,所以keepalived会将日志输出到系统默认日志文件syslog.log中

shell> cat syslog.6|grep "vrrp"
Oct 23 15:50:34 bjuc-mysql1 Keepalived_vrrp: VRRP_Script(check_mysql) failed
Oct 23 15:50:34 bjuc-mysql1 syslog-ng[31634]: Error opening file for writing; filename='/var/log/tang/Keepalived_vrrp.log', error='No such file or directory (2)'
Oct 23 15:50:35 bjuc-mysql1 Keepalived_vrrp: VRRP_Instance(VI_74) Received higher prio advert
Oct 23 15:50:35 bjuc-mysql1 Keepalived_vrrp: VRRP_Instance(VI_74) Entering BACKUP STATE
Oct 23 15:50:35 bjuc-mysql1 syslog-ng[31634]: Error opening file for writing; filename='/var/log/tang/Keepalived_vrrp.log', error='No such file or directory (2)'
Oct 23 15:50:35 bjuc-mysql1 syslog-ng[31634]: Error opening file for writing; filename='/var/log/tang/Keepalived_vrrp.log', error='No such file or directory (2)'
Oct 23 15:50:35 bjuc-mysql1 syslog-ng[31634]: Error opening file for writing; filename='/var/log/tang/Keepalived_vrrp.log', error='No such file or directory (2)'
Oct 23 15:50:35 bjuc-mysql1 syslog-ng[31634]: Error opening file for writing; filename='/var/log/tang/Keepalived_vrrp.log', error='No such file or directory (2)'
Oct 23 15:50:56 bjuc-mysql1 Keepalived_vrrp: VRRP_Script(check_mysql) succeeded

日志分析结果

从日志中可以发现,在Oct 23 15:50:34 因为检测脚本检测MySQL服务失败,导致了vip切换 再去87.123上查看keepalvied的切换,确定一下切换时间

Oct 23 15:50:35 prod-UC-yewu-db-slave2 Keepalived_vrrp: VRRP_Instance(VI_74) forcing a new MASTER election 
Oct 23 15:50:36 prod-UC-yewu-db-slave2 Keepalived_vrrp: VRRP_Instance(VI_74) Transition to MASTER STATE 
Oct 23 15:50:37 prod-UC-yewu-db-slave2 Keepalived_vrrp: VRRP_Instance(VI_74) Entering MASTER STATE 

通过以上日志信息,我们发现双主是在Oct 23 15:50:35发生了切换

3.3 疑问?那么检测脚本为什么会检测失败呢?

查看检测脚本内容

shell> cat check_mysql.sh
#!/bin/bash
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
USER=xxx
PASSWORD=xxx
PORT=3306
IP=127.0.0.1

mysql  --connect-timeout=1 -u$USER -p$PASSWORD -h$IP -P$PORT -e "select 1;"
exit $?

我们发现,检测脚本很简单,执行“select 1”命令,超时时间为1s,这个sql不影响MySQL任何操作,耗费性能很小,那为什么还会失败呢?我们去MySQL查看一下日志,看看有没有发现

3.4 查看MySQL日志

191023 15:50:54 [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress
191023 15:50:55 [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress
191023 15:50:55 [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress
191023 15:50:56 [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress
191023 15:50:56 [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress
191023 15:50:57 [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress
191023 15:50:58 [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress
191023 15:50:58 [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress
191023 15:50:59 [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress
191023 15:51:28 [ERROR] Slave SQL: Error 'Lock wait timeout exceeded; try restarting transaction' on query. Default database: 'statusnet'. Query: 'UPDATE ticket SET max_id=max_id+step WHERE biz_tag='p2p_file'', Error_code: 1205
191023 15:54:43 [ERROR] Slave SQL thread retried transaction 10 time(s) in vain, giving up. Consider raising the value of the slave_transaction_retries variable.
191023 15:54:43 [Warning] Slave: Lock wait timeout exceeded; try restarting transaction Error_code: 1205
191023 15:54:43 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin.001432' position 973809430
191023 16:04:13 [ERROR] Error reading packet from server: Lost connection to MySQL server during query ( server_errno=2013)
191023 16:04:13 [Note] Slave I/O thread killed while reading event
191023 16:04:13 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.001432', position 998926454
191023 16:04:20 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.001432' at position 973809430, relay log './mysql-relay-bin.000188' position: 54422
191023 16:04:20 [Note] 'SQL_SLAVE_SKIP_COUNTER=1' executed at relay_log_file='./mysql-relay-bin.000188', relay_log_pos='54422', master_log_name='mysql-bin.001432', master_log_pos='973809430' and new position at relay_log_file='./mysql-relay-bin.000188', relay_log_pos='54661', master_log_name='mysql-bin.001432', master_log_pos='973809669'
191023 16:04:20 [Note] Slave I/O thread: connected to master 'zhu@x:3306',replication started in log 'mysql-bin.001432' at position 998926454

从日志中可以发现,MySQL在15:50:54报 Server shutdown in progress错误,在15:54:43 主从关系挂了,在16:04:20的时候主从关系自动恢复正常。那么这个报错是什么呢,Server shutdown in progress是什么意思呢?这个报错信息是因为在MySQL 5.5时,如果主动kill一个长的慢查询,而且这个sql还用到了sort buffer,就会出现类似MySQL重启的情况,连接也会关闭。

官方bug地址:https://bugs.mysql.com/bug.php?id=18256

赶紧去线上环境看看自己的环境是不是MySQL 5.5

mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.5.22, for debian-linux-gnu (x86_64) using readline 6.2

Connection id:  76593111
Current database:
Current user:  xxx@127.0.0.1
SSL:   Not in use
Current pager:  stdout
Using outfile:  ''
Using delimiter: ;
Server version:  5.5.22-0ubuntu1-log (Ubuntu)
Protocol version: 10
Connection:  127.0.0.1 via TCP/IP
Server characterset: utf8
Db     characterset: utf8
Client characterset: utf8
Conn.  characterset: utf8
TCP port:  3306
Uptime:   462 days 11 hours 50 min 11 sec

Threads: 9  Questions: 14266409536  Slow queries: 216936  Opens: 581411  Flush tables: 605  Open tables: 825  Queries per second avg: 357.022

我们看到线上环境是MySQL 5.5版本,运行时间为462 days 11 hours 50 min 11 sec,证明MySQL进程没有重启,那么通过刚才error日志(主从关系重启)验证了MySQL的这个bug so,keepalived在这一个发现MySQL不可用,就产生了failed。

3.5 那么我们再深挖一下,是什么慢sql导致被kill呢?

我们继续查找相应时间点的slow日志

# Time: 191023 15:50:39
# User@Host: dstatusnet[dstatusnet] @  [x]
# Query_time: 35.571088  Lock_time: 0.742899 Rows_sent: 1  Rows_examined: 72
SET timestamp=1571817039;
SELECT g.id,g.group_pinyin, g.external_type,g.external_group_id,g.mount_id,g.is_display as group_type,g.nickname,g.site_id,g.group_logo,g.created,g.modified,g.misc,g.name_update_flag as name_flag, g.logo_level,g.group_status,g.conversation, g.only_admin_invite,g.reach_limit_count,g.water_mark  FROM user_group AS g LEFT JOIN group_member as gm ON g.id = gm.group_id WHERE g.is_display in (1,2,3) AND gm.profile_id = 7382782 AND gm.join_state != 2 AND UNIX_TIMESTAMP(g.modified) > 1571722305 ORDER BY g.modified ASC LIMIT 0, 1000;
# User@Host: dstatusnet[dstatusnet] @  [x]
# Query_time: 34.276504  Lock_time: 8.440094 Rows_sent: 1  Rows_examined: 1
SET timestamp=1571817039;
SELECT conversation, is_display as group_type, group_status FROM user_group WHERE id=295414;
# Time: 191023 15:50:40
# User@Host: dstatusnet[dstatusnet] @  [x]
# Query_time: 31.410245  Lock_time: 0.561083 Rows_sent: 0  Rows_examined: 7
SET timestamp=1571817040;
SELECT id, clientScope, msgTop FROM uc_application where site_id=106762 AND msgTop=1;
# User@Host: dstatusnet[dstatusnet] @  [x]
# Query_time: 38.442446  Lock_time: 2.762945 Rows_sent: 2  Rows_examined: 38
SET timestamp=1571817040;
SELECT g.id,g.group_pinyin, g.external_type,g.external_group_id,g.mount_id,g.is_display as group_type,g.nickname,g.site_id,g.group_logo,g.created,g.modified,g.misc,g.name_update_flag as name_flag, g.logo_level,g.group_status,g.conversation, g.only_admin_invite,g.reach_limit_count,g.water_mark  FROM user_group AS g LEFT JOIN group_member as gm ON g.id = gm.group_id WHERE g.is_display in (1,2,3) AND gm.profile_id = 9867566 AND gm.join_state != 2 AND UNIX_TIMESTAMP(g.modified) > 1571796860 ORDER BY g.modified ASC LIMIT 0, 1000;
# Time: 191023 15:50:46
# User@Host: dstatusnet[dstatusnet] @  [x]
# Query_time: 40.481602  Lock_time: 8.530303 Rows_sent: 0  Rows_examined: 1
SET timestamp=1571817046;
update heartbeat set modify=1571817004 where session_id='89b480936c1384305e35b531221b705332a4aebf';
# Time: 191023 15:50:41
# User@Host: dstatusnet[dstatusnet] @  [x]
# Query_time: 32.748755  Lock_time: 0.000140 Rows_sent: 0  Rows_examined: 3
SET timestamp=1571817041;
SELECT id,nickname,mount_id,is_display,external_type,misc,site_id,conversation as conv_id,only_admin_invite,reach_limit_count,water_mark, group_logo,logo_level,created,modified,name_update_flag as name_flag, group_pinyin, group_status,external_group_id,event_id FROM user_group WHERE id in(1316262,1352179,1338753) AND UNIX_TIMESTAMP(modified) > 1571023021 ORDER BY created ASC;
# Time: 191023 15:50:46
# User@Host: dstatusnet[dstatusnet] @  [x]
# Query_time: 40.764872  Lock_time: 4.829707 Rows_sent: 0  Rows_examined: 7
SET timestamp=1571817046;
SELECT id,nickname,mount_id,is_display,external_type,misc,site_id,conversation as conv_id,only_admin_invite,reach_limit_count,water_mark, group_logo,logo_level,created,modified,name_update_flag as name_flag, group_pinyin, group_status,external_group_id,event_id FROM user_group WHERE id in(673950,1261923,1261748,1262047,1038545,1184675,1261825) AND UNIX_TIMESTAMP(modified) > 1571744114 ORDER BY created ASC;

如上所示: 发现在这个时间段这条sql被执行了多次,时间都超过了30~60s,这个属于严重慢sql了

3.6 那么是什么操作执行了kill呢?

经过询问及排查,发现我们通过pt-kill用到了自动查杀功能,配置的查询超时时间为30s

shell> ps -aux|grep 87.72
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root      3813  0.0  0.0 218988  8072 ?        Ss   Oct19   9:54 perl /usr/bin/pt-kill --busy-time 30 --interval 10 --match-command Query --ignore-user rep|repl|dba|ptkill --ignore-info 40001 SQL_NO_CACHE --victims all --print --kill --daemonize --charset utf8 --log=/tmp/ptkill.log.kill_____xxx_____172.16.87.72 -h172.16.87.72 -uxxxx -pxxxx

shell> cat /tmp/ptkill.log.kill_____xxx_____172.16.87.72
2019-10-23T15:45:37 KILL 75278028 (Query 39 sec) statusnet SELECT t.conv_id, t.notice_id, t.thread_type, t.parent_conv_id, t.seq, t.reply_count, t.last_reply_seq1, t.last_reply_seq2, t.revocation_seq, t.creator_id, t.status, t.operator_id, t.extra1 FROM notice_thread t WHERE parent_conv_id = 3075773 and notice_id in (1571816367355,1571814620251,1571814611880,1571814601809,1571814589604,1571814578823,1571814568507,1571814559399,1571812785487,1571812769810)

2019-10-23T15:45:37 KILL 75277932 (Query 39 sec) statusnet SELECT t.conv_id, t.notice_id, t.thread_type, t.parent_conv_id, t.seq, t.reply_count, t.last_reply_seq1, t.last_reply_seq2, t.revocation_seq, t.creator_id, t.status, t.operator_id, t.extra1 FROM notice_thread t WHERE parent_conv_id = 6396698 and notice_id in (18606128)

2019-10-23T15:45:37 KILL 75191686 (Query 39 sec) statusnet SELECT id,nickname,mount_id,is_display,external_type,misc,site_id,conversation as conv_id,only_admin_invite,reach_limit_count,water_mark, group_logo,logo_level,created,modified,name_update_flag as name_flag, group_pinyin, group_status,external_group_id,event_id FROM user_group WHERE id in(988091,736931,843788,739447,737242,1252702,736180,1150776) AND UNIX_TIMESTAMP(modified) > 1571740050 ORDER BY created ASC

发现果然是pt-kill主动去干掉了,结合之前的发现,真相已经在我们眼前了

3.7 那为什么这个sql跑了这么长时间,就单单这个时间报了呢?

我们结合其他时间的slow日志和当前的时间做个对比

# User@Host: dstatusnet[dstatusnet] @  [x]
# Query_time: 2.046068  Lock_time: 0.000079 Rows_sent: 1  Rows_examined: 1
SET timestamp=1572306496;
SELECT ... FROM user_group WHERE id in(693790) AND UNIX_TIMESTAMP(modified) > 0 ORDER BY created ASC;

我们发现一个规律,当where id in(单个值时)时,基本上是两秒,多个值时,时间就不固定了,这个结论有待其他证据进行进一步确认

四、那么我们如何解决呢?

解决及避免办法:

  • 可以选择升级MySQL的版本(5.7的最高版本)

  • 结合业务优化sql

Enjoy GreatSQL :)

本文由博客一文多发平台 OpenWrite 发布!

MySQL慢SQL排查:从客户端工具到智能治理平台的范式升级 慢SQL是数据库性能问题的核心表征,其本质是查询执行效率与系统资源消耗失衡的技术现象。理解其原理需深入MySQL查询优化器、统计信息机制、锁等待模型及执行计划生成逻辑。现代架构下,单纯依赖EXPLAIN或图形化客户端已难以支撑高效归因,技术价值正从‘人工试错’转向‘数据驱动推理’。典型应用场景包括高并发电商订单查询突增、分库分表环境下的跨节点慢日志定位、以及隐式类型转换引发的索引失效诊断。本文聚焦MySQL慢SQL排查这一高频工程任务,结合NineData社区版的智能归因能力与DBeaver/Navicat 阅读详情

相关推荐

TSMC65nm工艺下Virtuoso仿真gm-id曲线的保姆级教程(含ADE设置详解)

本文提供了一份在TSMC 65nm工艺下使用Cadence Virtuoso绘制gm-id曲线的详细教程。内容涵盖从理解gm/id方法学、搭建仿真环境、深度解析ADE设置,到运行DC仿真、提取数据并生成对数坐标曲线的完整流程。教程重点解析了Virtuoso ADE中的关键设置与常见避坑点,旨在帮助模拟集成电路设计初学者快速掌握这一核心设计工具,为高性能电路设计奠定基础。

grpc6streamer的博客 1173

Server shutdown in progress

前一阵遇到error日志里面报警,说是server shutdown 了,一阵紧张,查看监控历史,并没有当机具体的报错如下: 140307 11:06:18 [ERROR] /...

cml2016的博客 7004

从防御者视角复盘:用WinArpAttacker和Wireshark在Windows上模拟并检测ARP欺骗攻击

本文详细解析了Windows平台下的ARP欺骗攻击与防御策略,通过WinArpAttacker和Wireshark工具模拟攻击并检测异常流量。文章涵盖实验环境搭建、攻击原理深度解析、流量特征分析及企业级防御方案,帮助安全运维人员全面掌握ARP攻击检测与防护技术。

weixin_30918633的博客 121

mysql 报错 mysqld:sort aborted:Server shutdown in progress 原因

本文主要介绍在阿里云控制台查看日志管理>错误日志,出现类似以下报错的原因。

whatday的专栏 1564

新手必看:SMIC 0.18um PDK安装保姆级教程(附Cadence IC617环境配置)

本文提供SMIC 0.18um PDK在Cadence IC617环境下的详细安装教程,涵盖环境准备、文件解压、安装脚本运行、环境变量配置及Cadence集成验证等关键步骤,特别针对初学者常见问题提供解决方案,助力快速掌握芯片设计工具配置。

weixin_30522183的博客 491

51单片机学习(5)-----蜂鸣器的介绍与使用

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计 算机、 打印机、 复印机、 报警器、 电子玩具、 汽车电子设备、 电话机、 定 时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。1.半导体三极管也称为晶体三极管,可以说它是电子电路中最重要的器件。三极管顾名思义具有三个电极。二极管是由一个PN结构成的,而三极管由两个PN结构成,共用的一个电极成为三极管的基极(用字母b表示)。其他的两个电极成为集电极(用字母c表示)和发射极(用字母e表示)。

2302_80260350的博客 1万+

mysqld: Sort aborted: Server shutdown in progress

上午发现mysql数据库errlog里面有报错: [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress 相关如下 ...

cuizeen198835的博客 863

【误码率仿真】基于matlab 小波变换OFDM误码率仿真

其中,与传统的 OFDM 相比,小波变换 OFDM 在进行调制和解调时,使用的是小波变换函数。需要注意的是,由于小波变换函数将频域信号转换为时域信号,因此与传统 OFDM 不同,小波变换 OFDM 中的信号需要在时域上添加循环前缀。与传统的 OFDM 不同,小波变换 OFDM 使用小波函数作为基函数,而非正弦函数作为基函数,因此可以在保持子载波正交性的同时,让子载波之间的带宽变得更加均匀。在频域进行信号加权,然后进行小波逆变换,得到时域信号。在接收端进行信号接收,去掉循环前缀并进行小波变换得到频域信号。

Fanjufei的博客 662

[SQL] Shutdown is in progress

用sql server 2010运行,报如下错误: Shutdown is in progress  待重启数据库服务器之后,恢复正常。

天马行空 2601

7.26华为OD机试真题 新系统 - 炸弹人的雷区数量 (Java/Py/C/C++/Js/Go)

7.26华为OD机试真题 新系统 - 炸弹人的雷区数量 (Java/Py/C/C++/Js/Go)

算法大师! 793

【绝对要收藏-优秀论文范文】高项-度量绩效域

摘要:本文基于某水库数字孪生平台建设项目(2022.9-2023.5,645.97万元)的管理实践,从信息系统度量绩效域角度展开论述。项目构建了包含防洪调度等6大子系统的数字平台,实现洪水"四预"功能。重点分析了度量绩效域的五大要点:制定有效指标(如成本±8%偏差阈值)、多维数据采集、预警临界值设定、基于趋势的主动干预和持续改进机制。特别阐述了绩效问题的诊断方法,包括设备采购全周期成本分析、阶段性成本报告制度等。项目状态展示采用三维可视化看板,集成进度、成本、质量等多维度实时数据,最终实

xylllamm的博客 345

详解慢SQL故障引发MySQL高可用切换排查的全过程

在MySQL数据库后期运维中,DBA们有时会遇到这样一个现象:在排查问题时发现MySQL主备做了切换,而查看MySQL服务是正常的,DBA也没有做切换操作,服务器也没有维护操作,万幸的是业务还没有受到大的波及。这到底是为啥呢? 今天,小编就带大家从遇到的这个问题出发,层层排查,找出最终的根源所在,并给出解决办法。 假设原主服务器地址为:172.16.87.72,原备主服务器地址为:172.16.87.123。 01 排查思路 1、通过监控查看MySQL的各个指标 2、查看双主(keepalived)服务切换

GreatDB的博客 448

iOS逆向之深入解析Hook的原理方法和安全防护

Hook简介 Hook就是一种改变程序执行流程的一种技术的统称; 一段程序的执行流程是 A --> B --> C,现在我们在 A 和 B 之间插入一段代码或者直接改变 B ,这样程序原有的执行流程就发生了改变。如下图所示: Hook的方式:Method Swizzle,fishhook,Cydia Substrate; Hook原理 一、Method Swizzle 原理 利用OC的Runtime特性,动态去改变SEL(方法编号)和IMP(方法实现)的对应关系,达到OC方法调用流程改变

╰つ栺尖篴夢ゞ 2万+

mysql__一个神奇SQL引发的故障

一个神奇SQL引发的故障【转】 前几天一个客户数据库主实例告警,诊断过程中发现是由一个慢SQL导致的数据库故障,而在排查逐步深入之后却发现这个现象的不可思议。 问题描述 2016年12日09日,大概9点26分左右,一个客户的生产库主实例发出告警,告警信息如下: MySQL实例超过五分钟没有更新。这个告警信息简单解释下就是持续五分钟无法获取该实例的信息。 同时开发人员还反映,从12月09日...

anzhen0429的博客 401

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MySQL中的SQL故障有哪些_一个神奇SQL引发的故障【转】

前几天一个客户数据库主实例告警,诊断过程中发现是由一个慢SQL导致的数据库故障,而在排查逐步深入之后却发现这个现象的不可思议。问题描述2016年12日09日,大概9点26分左右,一个客户的生产库主实例发出告警,告警信息如下:MySQL实例超过五分钟没有更新。这个告警信息简单解释下就是持续五分钟无法获取该实例的信息。同时开发人员还反映,从12月09日凌晨1点开始,已经出现一些数据库请求超时的现象,直...

weixin_34965737的博客 285

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

老乡鸡订单系统实战:MySQL 主主复制 + Keepalived 高可用故障切换全解析

数据安全:主主复制实现双向同步,单库故障无数据丢失;业务不中断:Keepalived 自动漂移 VIP,业务无需修改配置;低成本:基于开源软件搭建,无需采购商业高可用方案。

zcz1607127821的博客 1004

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

高可用架构下数据库性能调优:主从切换、集群负载均衡及故障转移时的性能保障操作详解

本文探讨了高可用数据库架构下的性能优化策略,系统分析了主从复制延迟、主从切换性能断崖、集群负载不均等典型性能瓶颈,提出了"预防-响应-恢复"三维调优框架。通过主从切换精准化设计、集群动态负载均衡、故障有序恢复等方案,实现数据库在冗余部署下的性能保障。文章结合电商、金融等案例,详细阐述了切换触发机制优化、新主库预热、流量梯度切换等具体措施,并强调构建全链路监控与科学容量规划的重要性。最终通过支付系统案例证明优化效果,指出未来将向智能化调优发展,当前需建立完善的机制保障高可用与性能的平衡。

jingjing45678的博客 991

【20年Linux运维架构师总结】系统故障分析和排查001

先观测(监控+日志)→定位(缩小范围)→分析(根因)→修复。优先恢复业务(如切换节点)再深入分析。事后复盘,优化架构和监控,防止同类故障再次发生。掌握这些方法和工具,能有效提升系统稳定性,减少故障恢复时间!🚀。

老韩的Linux云计算架构师进阶之路 997

Java应用中 慢SQL导致内存无法回收,然后导致线程阻塞,CPU被撑爆

bash# 增加老年代空间,减少Full GC频率-XX:NewRatio=2 -XX:+UseG1GC # 对高延迟场景更友好-XX:MaxGCPauseMillis=200 # 目标暂停时间5. 熔断降级。使用 jmap 生成堆转储文件,通过MAT工具分析大对象或未释放的数据库资源:bashjmap -dump:live,format=b,file=heap_dump.hprof。GC压力:频繁Full GC尝试回收内存失败,导致GC线程占用CPU资源。

qq_41413652的博客 1011

从系统故障根因分析到架构复盘:构建高可用分布式系统的排查框架与实践

在分布式系统与微服务架构中,系统故障根因分析是保障服务稳定性的核心技术。其原理在于通过全局视角和链路思维,将故障视为系统预期服务的中断,并定位其最底层、可预防的根本原因。这项技术的核心价值在于避免表象归因和单一归因的陷阱,推动系统从被动救火转向主动防御与持续优化。其典型应用场景包括线上服务性能劣化、接口超时、服务雪崩等生产环境问题。本文以一次模拟的“服务雪崩”故障为例,详细拆解了从接入层到代码逻辑的五层排查框架,并强调了通过集成日志、指标与链路追踪构建可观测性体系的重要性,为高效定位根因和设计熔断降级机制提

weixin_34112181的博客 490

一个神奇SQL引发的故障

前几天一个客户数据库主实例告警,诊断过程中发现是由一个慢SQL导致的数据库故障,而在排查逐步深入之后却发现这个现象的不可思议。 问题描述 2016年12日09日,大概9点26分左右,一个客户的生产库主实例发出告警,告警信息如下: MySQL实例超过五分钟没有更新。这个告警信息简单解释下就是持续五分钟无法获取该实例的信息。 同时开发人员还反映,从1...

weixin_33725270的博客 171

腾讯云数据库CPU飙升排查指南:AIOps如何找到隐藏的慢SQL?

数据库CPU飙到95%,告警短信准时轰炸,打开 slow_query_log 却一片空白——这种场景几乎每个DBA都遭遇过。**数据库CPU飙升排查AIOps**的价值,恰恰在于它能跳出慢查询日志的框框,从全量性能指标中挖出那些“看不见的凶手”。不靠运气、不靠老法师的直觉,靠的是对高频短查询、锁等待风暴等隐性指标的持续采集与基线比对。

2601_96000280的博客 361

MySQL高可用架构

mode tcp# 定义ACL规则识别写请求(如包含INSERT/UPDATE/DELETE关键字)# 路由写请求至主节点组# 默认路由读请求至从节点组mode tcpserver master2 192.168.10.102:3306 check backup # 主节点故障时切换mode tcp关键参数说明:通过二进制匹配SQL语句前7字节,识别常见写操作关键字(如INSERT的十六进制为use_backend:根据ACL条件选择后端组。

2501_91421610的博客 1494

一次慢改表引发的线上死锁事故复盘

摘要(149字) 一次线上慢改表操作引发死锁事故的复盘。在执行pt-online-schema-change时,由于未提前检查长事务,导致MDL锁冲突:长事务持有读锁,DDL操作需要写锁而阻塞,最终影响业务请求响应。事故持续约50秒,通过终止异常事务恢复。核心教训:在线DDL仍依赖metadata lock,必须建立标准化流程,包括前置检查(长事务、锁等待)、执行监控和事后验证。后续需加强长事务监控、完善checklist并在低峰期执行变更。

月光晒了很凉快的博客 443

7月故障复盘精华:7个典型生产事故的根因分析模式与可复用的故障排查框架

下文的七个案例是根据常见故障模式整理的脱敏演练案例,不是某个组织在某月发生事故的公开统计。时间、规模、阈值和持续时长用于说明排查路径;生产复盘发布时应由事件记录、监控快照和变更单逐项核验。为何要建立"框架"而非"清单"?因为在真实的故障场景下,运维人员面对的是信息不完整、时间紧迫、压力巨大的环境。一个固定的排查清单在面对新类型故障时往往失效,而一个普适的分析框架可以帮助快速缩小排查范围、确定排查方向。

qwe0iop0的博客 6316
上一篇: 『叶问』#41,三节点的MGR集群,有两个节点宕机后还能正常工作吗
下一篇: 故障案例 | 一次慢SQL优化分析全过程
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值