MySQL备份问题排查和思考(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL备份问题排查和思考(一)
  • 1. 背景
  • 2. 疑点
  • 3. 问题分析
  • 4. 问题定位
  • 5. checking permissions的疑惑
  • 6. 探索优化思路
  • 7. 补充:关于几个timeout参数生效点


1. 背景

行内数据库备份在使用某备份软件,使用的数据库版本MySQL 8.0社区版,全备使用mysqldump进行,DBA早上巡检发现有一套数据库全备份失败,心里一疙瘩怎么回事呢?来看看如下报错


[mysqldump: Error: 'Lost connection to MySQL server during query' when trying to dump tablespaces mysqldump: couldn't execute 'SHOW VARIABLES LIKE 'ndbinfo'\_version' MySQL server has gone away (2006)]


肯定有同学有疑问?

  • 为什么mysqldump会出现丢失连接?
  • 为什么不使用xtrabackup呢?这需要另外章节来阐述了。


2. 疑点


为什么mysqldump会出现丢失连接?带着该问题进行以下分析:

  • 1.检查备份软件工具负载情况
  • 2.检查数据库中错误日志
  • 3.数据库的负载情况

3. 问题分析


3.1 备份软件是否存在高负载、排队或超时配置导致响应超时?

对整个备份系统进行排查,虽然备份系统任务多,但并没有出现性能瓶颈导致数据库备份时超时,备份软件也没有设置备份超时时间自动断开的相关配置

3.2 检查数据库错误日志


2020-10-26T01:31:14.465387+08:00 149718 [Note] [MY-010914] [Server] Aborted connection 149718 to db: 'unconnected' user: 'root' host: 'localhost' (Got an error reading communication packets).


通过数据库错误日志发现同备份软件报错一样,对于这个错误,MOS上有一个比较好的解释如下:


屏幕快照 2021-11-19 下午3.26.22.png


不管怎么样我们后面先来看备份软件触发了些什么语句。

3.3 检查数据库负载情况,备份期间cpu、io均比较正常


屏幕快照 2021-11-19 下午3.26.43.png



4. 问题定位


从上述检查来看,报错处是Got an error reading而不是timeout,关于timeout的触发方式我们最后总结。首先从备份软件架构,备份软件在数据库中部署agent,所以连接属于交互式连接受到参数interactive_timeout的影响,那么为什么导致的超时丢失连接的呢?我们可以进行问题复现,使用备份软件对数据库发起重新备份,对数据库进行监控


4.1 通过备份软件发起备份,可以看到会发起4个本地备份连接,3个处于sleep状态,一个线程处于执行状态下,如下:

屏幕快照 2021-11-19 下午3.27.20.png


SQL语句:

  SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'UNDO LOG' AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN ('xxx'))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE, TOTAL_EXTENTS, INITIAL_SIZE ORDER BY LOGFILE_GROUP_NAME



注意这里的状态为checking permissions,并且这个语句长期处于这个状态。我们以前理解的这个就是在鉴权,我们一般的认知是下面一些顺序:

  • starting:lex+yacc 语法语义解析,得到解析树
  • checking permissions:根据解析后的解析树,对需要访问的表进行鉴权
  • opening tables:打开访问的表,建立内部访问表的属性(表和字段信息),建立好和Innodb的关联,同时加上表锁(MDL LOCK)
  • optimizing/statistics/preparing:这3个状态处于语句的物理和逻辑优化阶段,之后建立好执行计划
  • Sending data( 8.0为executing):select语句MySQL层和Innodb层进行数据交互,遇到这个状态通常考虑语句是否足够优化
  • Update:同上insert语句,如果遇到行锁会处于这个状态下。
  • Updating:同上delete/update语句,如果遇到行锁会处于这个状态下。
  • query end(waiting for handler commit 8.0):语句的提交过程包含在这个状态下,遇到这个问题,主要考虑是否大事务的存在。
  • closing tables:和opening tables对应,释放表的内部访问版本放入缓存共下次使用,同时也包含语句的错误回滚也在这个状态下
  • freeing items:释放解析树

我们能够看到,鉴权实际上在比较靠前的位置,是不是说这里语句还没真正的开始执行呢?我们先放一放。



4.2 通过执行show processlist发现上述SQL一直处于运行状态,于是终止备份,手工运行该SQL

屏幕快照 2021-11-19 下午3.27.59.png

由此可以推测发现,备份软件在发起备份时会发起4个连接,而其中一个连接执行SQL比较久,而另外3个sleep连接在超过interactive_timeout后断开,导致agent整体退出关闭所有的数据库连接,执行的SQL也终止,所以报错Got an error reading。但是奇怪的是我们在日志并没有找到Got timeout reading communication packets的日志。



            </div>
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
SQL 监控 安全
数据安全之认识数据库审计系统
随着企业业务数据量的不断增长和数据存储的集中化,数据库成为企业的核心资产之一。然而,数据库面临着各种安全威胁,如SQL注入、权限滥用、数据泄露等。为了保障数据库的安全性和完整性,企业需要采取有效的审计措施来监控和记录数据库的操作行为。本文让我们一起来认识数据库审计系统。
359 1
|
开发框架 缓存 Cloud Native
微软发布 .NET 云原生开发框架—— .NET Aspire
微软于 2023-11-14日 发布了 .NET 8 的正式版。伴随着这个重要 .NET 版本的发布,微软也发布了一个全新的 .NET云原生开发框架 —— .NET Aspire,它提供了如下 3 个方面的能力,来帮助我们使用 .NET 开发分层、云就绪的可观测、本地与生产环境一致的分布式云原生应用程序。
1044 0
|
机器学习/深度学习 人工智能 自然语言处理
深度学习基础之经典神经网络模型
深度学习模型来源于神经系统层次化结构特性,主要机制是层层递进,逐层抽象,主要应用于计算机视觉(computer vision,CV)和自然语言处理(Natural language processing,NLP)。
475 1
|
消息中间件 Kafka API
这些年背过的面试题——Kafka篇
本文是技术人面试系列Kafka篇,面试中关于Kafka都需要了解哪些基础?一文带你详细了解,欢迎收藏!
|
存储 SQL NoSQL
数据库技术全攻略:原理、应用与未来展望
一、引言 在数字化时代,数据是企业决策的关键
|
监控 数据可视化 关系型数据库
MetricBeat + Elasticsearch + Kibana 实现监控指标可视化
MetricBeat + Elasticsearch + Kibana 实现监控指标可视化
|
XML Java 数据库连接
Spring Boot整合Mybatis(注解版+XML版)
Spring Boot整合Mybatis(注解版+XML版)
296 0
|
SQL Java 关系型数据库
技术心得记录:开源BI分析工具Metabase配置与完全使用手册
技术心得记录:开源BI分析工具Metabase配置与完全使用手册
2249 0
|
Oracle 关系型数据库 Apache
一键实现 Oracle 数据整库同步至 Apache Doris
极大降低数据同步门槛,使数据同步变得更加简单高效
1051 0
一键实现 Oracle 数据整库同步至 Apache Doris
|
SQL 关系型数据库 MySQL
MySQL外键约束(FOREIGN KEY)
MySQL外键约束(FOREIGN KEY)
536 0