[背景简介]

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。mysql虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。故障基本都能通过社区和官方文档获取解决方案,在应用范围上也是很广的,互联网公司基本都有使用mysql。本章主要针对mysql5.7.25的锁表故障进行分析处理。

[分析过程]

1、首先接到业务反馈数据库完全无法写入数据了,后查看数据库监控发现指标正常;

2、登陆数据库主机核实主机资源正常:

3、通过showprocesslist查看当前连接,发现300左右的连接基本全是waitingfor global read lock和少部分waitingfor stored function metadata lock以及FLUSHTABLES WITH READ LOCK,如下所示

4、通过showOPEN TABLES where In_use > 0查看当前被锁表xx_test,

5、通过查看当前事务发现只有两个事务;

6、通过查看当前正在锁事务和等待锁事务,发现并没有记录有正在锁事务和等待锁事务

7、通过查看当前事务确认到目前只有两个事务在运行,其它都是都在等待,且无等待锁表及正在锁表。

8、发现备份账号FLUSHTABLES WITH READ LOCK关闭所有打开的表并使用全局读锁锁定所有数据库的所有表,所以业务查询没有问题。

9、猜想应该是因为xx_test的锁表阻塞了FLUSHTABLES WITH READ LOCK执行,导致整个数据库完全无法修改。

[验证过程]

  1. 首先通过processlist输出看到锁表xx_test连接有3个等待该表的锁,其它并没有该表请求连接,先将这三个等待的select连接kill。

  2. 然后将当前正在执行的两个事务kill。

  3. 观察数据库发现FLUSH TABLES WITH READ LOCK结束,其它等待事务都开始执行,数据库恢复正常。

[总结]

数据库触发FLUSHTABLES WITH READLOCK应该是有业务方在备份,单纯的表被锁了一般情况下也只会影响锁表的写,但是在锁表情况的备份触发FLUSHTABLES WITH READ LOCK,就可能导致整个库变成只读,建议备份工作都放在晚上闲时。

mysql锁表查询_Mysql数据库锁情况下开启备份导致数据库无法访问处理分享相关推荐

  1. mysql锁表查询_mysql锁表查询(mysql查询锁表语句)

    mysql锁表查询(mysql查询锁表语句) 2020-07-24 11:44:55 共10个回答 怎么查找mysql中的锁表语句showprocesslist;SHOWPROCESSLIST显示哪些 ...

  2. mysql分表 查询_mysql分表+查询

    mysql分表+查询 垂直分表: 其实没啥好讲,就是 主键+常用列 放在原表中,再讲 主键+一些不常用列 放在另外的表中. 这样一个数据页就可以存放更多数据. 但是缺点也明显,可能会增加join 或 ...

  3. mysql锁表查询_Mysql upate 更新锁表还是锁行测试

    mysql 学习 主题: -- 查询是否自动提交事务select @@autocommit;--关闭自动提交事务set autocommit = 0;--开启--执行--结束 事务start tran ...

  4. mysql 连表查询_mysql数据库之联表查询

    表准备: 这次我们用到5张表: class表: student表: score表: course表: teacher表: 表结构模型: 我们针对以下需求分析联表查询: 1.查询所有的课程的名称以及对应 ...

  5. 如何避免mysql回表查询_mysql如何避免回表查询

    <迅猛定位低效SQL?>留了一个尾巴: select id,name where name='shenjian' select id,name,sexwhere name='shenjia ...

  6. desc mysql 连表查询_Mysql连表查询

    mysql的连接 语法: select 查询列表 rom 表1 别名 连接类型 join 表2 别名 on连接条件 where 筛选条件 group by 分组 having 筛选条件 order b ...

  7. golang mysql多表查询_MySQL多表查询

    一 多表连接查询 #重点:外链接语法 SELECT 字段列表 FROM 表1 INNER|LEFT|RIGHT JOIN 表2 ON 表1.字段= 表2.字段; #建表 create table de ...

  8. mysql虚拟表查询_mysql虚拟表

    虚拟表,顾名思义,就是实际上并不存在(物理上不存在),但是逻辑上存在的表.这样说很抽象,还是看一些实际的例子吧. 在mysql中,存在三种虚拟表:临时表.内存表和视图.视图会单独讲,本节仅仅将临时表和 ...

  9. mysql delete 会锁表吗_MySQL高压缩引擎TokuDB 揭秘

    原文出处:http://mysql.taobao.org/monthly/2017/07/04/ HybridDB for MySQL(原名petadata)是面向在线事务(OLTP)和在线分析(OL ...

最新文章

  1. ceph bluestore 源码分析:ceph-osd内存查看方式及控制源码分析
  2. python方向-目前最全的Python的就业方向
  3. nyoj 1217 GLaDOS的耳机
  4. NSArray ----NSMutableArray
  5. Android 编译系统分析(二)
  6. Github 简明教程 - 操作标签
  7. Fail to get tape drive(tsm) inventory
  8. window下Python2.7和3.5共存以及两个版本下使用pip
  9. 下docfetcher先下Java,docfetcher怎么用?docfetcher搜索文档内容的方法介绍
  10. 记一次曲折的获取权限
  11. excel比对两列数据
  12. TextCNN模型原理
  13. Apktool 使用详解
  14. 交换机基本原理和配置
  15. iPad及BT4下的WEP破解实验与分析 | Network Security
  16. 独家分享《非诚勿扰2》普清下载 葛优 舒淇 姚晨 孙红雷 邵兵 安以轩 廖凡
  17. C#:DataTable 操作
  18. 【区块链】发布一个纯Python实现的EOSIO WAX SDK
  19. WineBottler for Mac (Mac运行exe程序) 使用教程
  20. Sql Server常用命令整理篇:生成连续日期序列并循环

热门文章

  1. jpa 异常捕获_JPA和CMT –为什么捕获持久性异常不够?
  2. maven使用testng_使用Maven Failsafe和TestNG分别运行单元测试和集成测试
  3. 继承Javadoc方法注释
  4. 使用Spring Security和jdbc的Spring Boot第2部分
  5. 使用Boxfuse为您的REST API设置https
  6. 线程并发库和线程池的作用_并发–顺序线程和原始线程
  7. 太糟糕了,Java 8没有Iterable.stream()
  8. Mockito 101
  9. 检查Red Hat JBoss BRMS部署架构的规则和事件(第一部分)
  10. Java中的简单REST客户端