mysql锁表查询_Mysql数据库锁情况下开启备份导致数据库无法访问处理分享
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执行,导致整个数据库完全无法修改。
[验证过程]
首先通过processlist输出看到锁表xx_test连接有3个等待该表的锁,其它并没有该表请求连接,先将这三个等待的select连接kill。
然后将当前正在执行的两个事务kill。
观察数据库发现FLUSH TABLES WITH READ LOCK结束,其它等待事务都开始执行,数据库恢复正常。
[总结]
数据库触发FLUSHTABLES WITH READLOCK应该是有业务方在备份,单纯的表被锁了一般情况下也只会影响锁表的写,但是在锁表情况的备份触发FLUSHTABLES WITH READ LOCK,就可能导致整个库变成只读,建议备份工作都放在晚上闲时。
mysql锁表查询_Mysql数据库锁情况下开启备份导致数据库无法访问处理分享相关推荐
- mysql锁表查询_mysql锁表查询(mysql查询锁表语句)
mysql锁表查询(mysql查询锁表语句) 2020-07-24 11:44:55 共10个回答 怎么查找mysql中的锁表语句showprocesslist;SHOWPROCESSLIST显示哪些 ...
- mysql分表 查询_mysql分表+查询
mysql分表+查询 垂直分表: 其实没啥好讲,就是 主键+常用列 放在原表中,再讲 主键+一些不常用列 放在另外的表中. 这样一个数据页就可以存放更多数据. 但是缺点也明显,可能会增加join 或 ...
- mysql锁表查询_Mysql upate 更新锁表还是锁行测试
mysql 学习 主题: -- 查询是否自动提交事务select @@autocommit;--关闭自动提交事务set autocommit = 0;--开启--执行--结束 事务start tran ...
- mysql 连表查询_mysql数据库之联表查询
表准备: 这次我们用到5张表: class表: student表: score表: course表: teacher表: 表结构模型: 我们针对以下需求分析联表查询: 1.查询所有的课程的名称以及对应 ...
- 如何避免mysql回表查询_mysql如何避免回表查询
<迅猛定位低效SQL?>留了一个尾巴: select id,name where name='shenjian' select id,name,sexwhere name='shenjia ...
- desc mysql 连表查询_Mysql连表查询
mysql的连接 语法: select 查询列表 rom 表1 别名 连接类型 join 表2 别名 on连接条件 where 筛选条件 group by 分组 having 筛选条件 order b ...
- golang mysql多表查询_MySQL多表查询
一 多表连接查询 #重点:外链接语法 SELECT 字段列表 FROM 表1 INNER|LEFT|RIGHT JOIN 表2 ON 表1.字段= 表2.字段; #建表 create table de ...
- mysql虚拟表查询_mysql虚拟表
虚拟表,顾名思义,就是实际上并不存在(物理上不存在),但是逻辑上存在的表.这样说很抽象,还是看一些实际的例子吧. 在mysql中,存在三种虚拟表:临时表.内存表和视图.视图会单独讲,本节仅仅将临时表和 ...
- mysql delete 会锁表吗_MySQL高压缩引擎TokuDB 揭秘
原文出处:http://mysql.taobao.org/monthly/2017/07/04/ HybridDB for MySQL(原名petadata)是面向在线事务(OLTP)和在线分析(OL ...
最新文章
- ceph bluestore 源码分析:ceph-osd内存查看方式及控制源码分析
- python方向-目前最全的Python的就业方向
- nyoj 1217 GLaDOS的耳机
- NSArray ----NSMutableArray
- Android 编译系统分析(二)
- Github 简明教程 - 操作标签
- Fail to get tape drive(tsm) inventory
- window下Python2.7和3.5共存以及两个版本下使用pip
- 下docfetcher先下Java,docfetcher怎么用?docfetcher搜索文档内容的方法介绍
- 记一次曲折的获取权限
- excel比对两列数据
- TextCNN模型原理
- Apktool 使用详解
- 交换机基本原理和配置
- iPad及BT4下的WEP破解实验与分析 | Network Security
- 独家分享《非诚勿扰2》普清下载 葛优 舒淇 姚晨 孙红雷 邵兵 安以轩 廖凡
- C#:DataTable 操作
- 【区块链】发布一个纯Python实现的EOSIO WAX SDK
- WineBottler for Mac (Mac运行exe程序) 使用教程
- Sql Server常用命令整理篇:生成连续日期序列并循环
热门文章
- jpa 异常捕获_JPA和CMT –为什么捕获持久性异常不够?
- maven使用testng_使用Maven Failsafe和TestNG分别运行单元测试和集成测试
- 继承Javadoc方法注释
- 使用Spring Security和jdbc的Spring Boot第2部分
- 使用Boxfuse为您的REST API设置https
- 线程并发库和线程池的作用_并发–顺序线程和原始线程
- 太糟糕了,Java 8没有Iterable.stream()
- Mockito 101
- 检查Red Hat JBoss BRMS部署架构的规则和事件(第一部分)
- Java中的简单REST客户端