上云无忧 > 文档中心 > 百度智能云云数据库RDS大事务报警处理方法
云数据库 RDS
百度智能云云数据库RDS大事务报警处理方法

文档简介:
大事务是指运行时间比较长,操作的数据比较多的事务。大事务风险有很多,主要集中如下两点: 锁定太多的数据,造成大量的阻塞和锁超时,影响其他线程正常执行SQL语句。 执行时间长,容易造成主从延迟。 for MySQL 版 for SQL Server 版 for PostgreSQL 版
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

背景

大事务是指运行时间比较长,操作的数据比较多的事务。大事务风险有很多,主要集中如下两点:

  • 锁定太多的数据,造成大量的阻塞和锁超时,影响其他线程正常执行SQL语句
  • 执行时间长,容易造成主从延迟

百度RDS数据库采集了大事务的监控项:最大事务执行时间,用于监控大事务是否存在。大事务监控默认不会添加报警策略,需要用户根据自身需要配置报警策略。

本文重点讲解存在大事务报警的情况下,如何应对和处理。

参考资料:《监控报警操作指南》

问题处理过程

问题发现

大事务问题的发现渠道有如下几种:

  1. 在BCM配置了RDS最大事务执行时间的监控策略,当达到报警阈值,会发送报警信息
  2. 查看RDS仪表盘监控趋势图,观察最大事务执行时间的曲线,如下图例
  3. 访问数据库过程中发现耗时增加,极大可能是存在未提交的大事务,阻塞了部分线程的SQL执行

问题定位

  • 第一步:使用数据库账号登录RDS实例,执行如下命令,查看当前进程状态,是否存在预期中的长耗时SQL
show processlist;

举例:得到结果如下

| 35620525 | db_user | ip:34880 | baidu_dba | Sleep  |  563 |           | NULL             |
| 35620617 | db_user | ip:35270 | NULL      | Query  |    0 | starting  | show processlist |
  • 第二步:打印InnoDB内核日志,建议打印到文本文件方便后续分析
SHOW ENGINE INNODB STATUS \G
  • 第三步:查询文件中的关键字:ACTIVE
grep  -A2  ACTIVE  status.log

举例:得到结果如下

---TRANSACTION 421530771110624, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 326595544, ACTIVE 565 sec
2 lock struct(s), heap size 1136, 1 row lock(s), undo log entries 1
MySQL thread id 35620525, OS thread handle 140055217084160, query id 400967592 127.0.0.1 db_user
  • 第四步:分析 如上面的举例,发现一个执行了565秒的事务,且事务的线程ID是与第一步查看到的线程ID匹配:35620525

问题解决

首先需要确认这个事务是否可以回滚,如果可以回滚,登录RDS执行KILL命令:

KILL 35620525(threadID)

这时客户端会收到报错信息如下,这是符合预期的:

ERROR 2006 (HY000): MySQL server has gone away

观察监控趋势图:最大事务执行时间恢复正常

相似文档
  • CPU占用率监控RDS实例的CPU使用情况。当CPU占用率高时,说明数据库压力大,通常会导致如下现象: 数据库响应变慢,SQL执行耗时变长,导致请求超时。 数据库读和写的QPS降低。 for MySQL 版 for SQL Server 版 for PostgreSQL 版
  • 数据库性能的优劣,直接关系到系统执行的效率和稳定性,如果出现性能问题不仅会损害公司形象,也可能会造成公司资金方面的损失。慢SQL是影响数据库性能很重要的一个方面。对于海量数据,劣质SQL和优质SQL之间的速度差别可能达到上百倍,解决慢SQL对解决数据库性能问题会起到事半功倍的效果。 for MySQL 版 for SQL Server 版 for PostgreSQL 版
  • 慢日志明细: 历史慢SQL实时统计,方便数据库管理员对慢查询语句进行分析,快速定位系统正在进行的性能问题。 错误日志明细: 开启和关闭MySQL服务的时间和服务运行中异常情况的统计,用于MySQL服务出现异常时,及时查找原因。 for MySQL 版
  • 数据容灾对于每个存储系统来说,都是不可缺少的,数据库也不例外。对于数据可用性有强需求的业务场景如金融、游戏业务等场景尤其如此。数据库容灾主要通过多副本架构来保证,同时可以通过定时备份数据、主从同步数据方法来保障数据高可用。在复杂网络情况,用户往往还会需要能有跨机房、跨可用区、跨地域的数据容灾能力。 for MySQL 版 for SQL Server 版 for PostgreSQL 版
  • 在数据库的使用过程中,随着流量的不断增长,需要对RDS实例进行扩容以满足高并发的性能要求,扩容方案一般情况下分为如下两类: 纵向扩展(Scale-Up)方案:升级RDS实例的套餐规格,通过增加CPU和内存的配置,提升数据库性能。 for MySQL 版 for SQL Server 版 for PostgreSQL 版
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部