【MySQL】如何判断一个数据库是否出问题
在实际的应用中,其实大多数是主从结构。而采用主备,一般都需要一定的费用。

对于主备,如果主机故障,那么只需要直接将流量打到备机就可以,但是对于一主多从,还需要将从库连接到主库上。
对于切换的操作,一种是主动切换,(人为升级配置),另一种是被动切换,(主机故障)。那么如何判断一个数据库是否出问题。
select 1 判断
set global innodb_thread_concurrency=1;
| session A | session B |
|---|---|
| select sleep(100) from T; | select 1; |
| select * from T; |

innodb_thread_concurrency 控制InnoDB的并发线程上限,达到这个值,InnoDB在接受新的请求,就会进入等待状态,直到有退出的线程,才会执行。
我们讲 innodb_thread_concurrency 设置为1,然后session A就阻塞,然后在执行session B中的 select 1 ,发现正常返回结果,1,但是如果查询表T 发现被阻塞了。所以select 1 只能表示数据库进程还在,但是检测不出问题。
并发连接和并发查询
innodb_thread_concurrency 默认参数是0,表示不限制并发连接数。一般并发数会受到操作系统底层的线程。建议设置在 64-128之间。 那么可能有人会想,128并发连接数是不是有点低。因为对于大型互联网应用来说,动辄都是秒级别的上万流量。
其实并发连接和并发查询不是同一个事情,并发连接是客户端和服务端建立了连接,多占用内存。也就是通过 show processlist , 而并发查询是当前正在执行的语句。

那么处于锁等待的线程是否占用并发线程的计数,其实是不占用的,因为锁等待的线程是不占用CPU,没有必要占用。
查表判断
为了避免因并发线程数过多而导致的系统不可用,可以创建一张health_check 里放一条数据。然后定期执行。
select * from mysql.health_check;
但是,如果bin log的磁盘满了,那么就会导致无法更新语句,但是可以正常读取。之前在生产的时候就遇到过,磁盘满,查询语句可以执行,但是更新语句无法执行。
更新判断
update mysql.health_check set t_modified=now();
既然要更新,那么可以采用时间做处理,但是针对主从库检测的话,如果同步修改从库,那么就会出现行冲突,从库即接受主库的bin log,也接受自己的更新。所以可以采用多条数据。
mysql> CREATE TABLE `health_check` (`id` int(11) NOT NULL,`t_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`id`)
) ENGINE=InnoDB;/* 检测命令 */
insert into mysql.health_check(id, t_modified) values (@@server_id, now()) on duplicate key update t_modified=now();
但是这种方式其实有一定的随机性,那就是IO利用率已经100%。可能我们执行的update语句很快执行完毕,在超时时间内返回的,那么我们就无法检测出系统是否故障。
内部统计
当然我们可以采用 performance_schema 库本身的 redo log的时间统计。
总结
其实对于数据库来说,推荐使用 更新语句+内部统计的方式,其实不仅仅对于数据库来说,对于业务系统来说,需要保证服务高可用,而目前所在公司的方案是采用SLB+健康检查接口进行判断服务是否高可用。弊端的话 其实没有办法检测服务异常,只能检测服务进程是否宕机。
相关文章:
【MySQL】如何判断一个数据库是否出问题
在实际的应用中,其实大多数是主从结构。而采用主备,一般都需要一定的费用。 对于主备,如果主机故障,那么只需要直接将流量打到备机就可以,但是对于一主多从,还需要将从库连接到主库上。 对于切换的操作&a…...
SQLite数据库的性能问题并不是单纯地由数据量的大小决定的,而是受到多种因素的综合影响。以下是一些可能导致SQLite性能问题的因素
SQLite数据库的性能问题并不是单纯地由数据量的大小决定的,而是受到多种因素的综合影响。以下是一些可能导致SQLite性能问题的因素: 数据量:当SQLite数据库中的数据量增长到一定程度时,查询、插入和更新等操作可能会变得缓慢。这…...
Blender怎么样启动默认移动和Cavity效果
在使用Blender的过程中,有一些特殊的技巧很重要。 比如默认地设置blender打开时,就是移动物体,这样怎么样设置的呢? 需要在界面里打开下面的菜单: 这样就找到默认设置的地方,把下面的移动勾选起来,这样点…...
Android 解决TextView多行滑动与NestedScrollView嵌套滑动冲突的问题
关键计算地方: 1.当前是上滑动还是下滑动(相对于屏幕) ,使用ev.getRawY()获得当前滑动位置在屏幕哪个地方 2. 计算文本客滑动到哪里即可停止, (行高*总文本行数)- (行高 * 最多显示行数) int sum getLineHeight() * getLineCount() - getLineHeight() * getMaxLines(); …...
Laravel 开发Api规范
一,修改时区 配置 config/app.php 文件 // 时区修改,感觉两者皆可,自己根据实际情况定义 timezone > PRC, // 大陆时间二,设置 Accept 头中间件 accept头即为客户端请求头,做成中间件来使用。Accept 决定了响应返…...
蓝色wordpress外贸建站模板
蓝色wordpress外贸建站模板 https://www.mymoban.com/wordpress/7.html...
windos环境,使用docker容器运行项目的,新增外部访问地址配置
对于运行在 Docker 容器中的项目,你需要在容器内部编辑 resolv.conf 文件。以下是一种常见的方法: 进入正在运行的 Docker 容器:docker exec -it [container_id] bash其中 [container_id] 是你正在运行的 Docker 容器的 ID。 在容器内部使…...
设计模式:生活中的组合模式
想象一下,你正在组织一个大型的家庭聚会。在这个聚会中,你需要准备各种菜肴,每个菜肴又包含不同的食材。你的目标是能够以统一的方式处理整个聚会的准备工作,不论是处理单个食材还是一整道菜肴。 在这个场景中,我们可…...
WPF OnStartup
在Windows Presentation Foundation (WPF)框架中,OnStartup 是 System.Windows.Application 类的一个受保护的虚方法,它是应用程序启动过程中的一个重要环节。当一个 WPF 应用程序启动时,其入口点通常是 App.xaml 文件和对应的后台代码文件 A…...
docker-相关
打镜像 1、编写dockfile文件,请自行百度 2、docker build -t 镜像名称:版本号 dockerFile路径 3、docker save -o 镜像压缩包名称.tar 镜像名称:镜像版本号 部署镜像 1、将镜像tar包放到部署机器上 2、加载镜像:docker load -i 镜像tar包路径 3、dock…...
二十、Rust AOP 切面增强
用过 java spring 的同学,应该会对 AspectJ 的 前置、后置、环绕 增强 念念不忘,巧了 rust 也有类似能力,稍显不同的是,为了向 “零成本抽象” 靠齐,Rust 的 “增强” 是在编译期 完成的。 编译期生成,则离…...
掌握Go语言:Go语言精细错误,清晰、高效的错误处理实践(32)
错误处理是任何编程语言中都至关重要的一部分,Go 语言提供了一套简单而强大的错误处理机制,使得处理错误变得高效而清晰。 Go 错误类型 在 Go 中,错误是一个普通的接口类型,即 error 接口,其定义如下: t…...
Spring与Web环境的集成
1. ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) ,这样的弊端是配置文件加载多…...
二叉树的遍历——bfs广度优先搜索
1、BinNode类的创建 (1)代码总览 ##(2)测试示例 2、二叉树的遍历 (1)图示 (2)代码总览 (3)测试示例...
飞鸟写作可靠吗 #职场发展#经验分享#经验分享
飞鸟写作是一个非常便捷的论文写作工具,不仅可以帮助用户高效地完成论文写作,还可以提供查重降重的功能,帮助用户确保论文的原创性。那么,飞鸟写作到底可靠吗?答案是肯定的。 首先,飞鸟写作提供的查重降重功…...
Java 实现自定义注解
一、interface 关键字 我们想定义一个自己的注解 需要使用 interface 关键字来定义。 如定义一个叫 MyAnnotation 的注解: public interface MyAnnotation { } 二、元注解 光加上 interface 关键字 还不够,我们还需要了解5大元注解 RetentionTargetDo…...
代码随想录Day48
Day 48 动态规划part09 今日任务 198.打家劫舍213.打家劫舍II337.打家劫舍III 代码实现 基础打家劫舍 class Solution {public static int rob(int[] nums) {if (nums null || nums.length 0) return 0;if (nums.length 1) return nums[0];int[] dp new int[nums.leng…...
Web 后台项目,权限如何定义、设置、使用:菜单权限、按钮权限 ts element-ui-Plus
Web 后台项目,权限如何定义、设置、使用:菜单权限、按钮权限 ts element-ui-Plus 做一个后台管理项目,里面需要用到权限管理。这里说一下权限定义的大概,代码不多,主要讲原理和如何实现它。 一、权限管理的原理 权限…...
ADB 操作命令及其详细用法
adb devices 用途:列出连接到计算机的所有 Android 设备。详解:执行该命令后,ADB 将扫描连接到计算机的所有 Android 设备,并列出它们的序列号。 adb connect <device> 用途:连接到指定 IP 地址的 Android 设备。…...
类的函数成员(三):拷贝构造函数
一.什么是拷贝构造函数? 1.1 概念 同一个类的对象在内存中有完全相同的结构,如果作为一个整体进行复制或称拷贝是完全可行的。这个拷贝过程只需要拷贝数据成员,而函数成员是共用的(只有一份拷贝)。 在建立对象…...
本科论文AI率高不高影响答辩?这个问题要搞清楚
很多同学AI率超标之后第一个问题就是:这会不会影响我参加答辩? 这个问题的答案取决于你的学校是怎么规定的,也和你超标的程度有关。我来帮你分析清楚。 各高校对AI率的处理方式 目前各高校的处理方式大致分三类: 第一类&#…...
2026年4月远程控制软件横评:谁才是你的“跨端神经中枢”?
转眼已至2026年,混合办公已成职场常态,AI也彻底渗透进每一寸数字土壤。曾经只负责“远程看看”的控制软件,如今已进化为融合AI辅助、超低延迟交互、全生态协同与企业级安全能力的数字生产力平台——它们不再只是工具,而是我们跨越…...
Claude Code 使用秘籍大公开!从零基础到精通,字节跳动官方手册等你拿!
本文提供了一份详尽的 Claude Code 使用手册,专为从零基础到精通的学习者设计。手册采用手把手教学方式,步骤清晰,技巧实用,无需复杂代码知识即可上手。文中特别强调了对使用 Gemini3 的伙伴的适用性,并鼓励读者点赞、…...
HDD与SSD终极对决:性能、成本与应用场景全解析
1. HDD与SSD:从构造看本质差异 第一次拆开电脑主机时,看到那个嗡嗡作响的金属盒子(HDD)和旁边安静的电路板(SSD),我就意识到它们是完全不同的物种。HDD就像老式留声机,数据存储在高速…...
深入解析:成为一名卓越的 Android 开发工程师
引言 在移动互联网蓬勃发展的今天,Android 系统凭借其开放性和庞大的用户基数,在全球范围内占据着主导地位。Android 开发工程师作为构建移动应用体验的核心力量,其角色日益重要。本文旨在深入探讨成为一名优秀的 Android 开发工程师所需的核心技能、职责要求以及面对的技术…...
用C++实现LBM格子玻尔兹曼方法MRT模拟加热气泡脱离
lbm格子玻尔兹曼方法mrt模拟加热气泡脱离c代码最近在研究流体力学相关的模拟,其中LBM(格子玻尔兹曼方法)的MRT(多松弛时间)模型在模拟加热气泡脱离这类复杂现象时展现出独特的优势。今天就来和大家分享一下如何用C 实现…...
AI辅助开发新体验:让快马智能模型为你的动漫应用增添推荐引擎
AI辅助开发新体验:让快马智能模型为你的动漫应用增添推荐引擎 最近在开发一个动漫推荐小应用时,尝试了用AI来增强功能体验,整个过程比想象中顺利很多。这个项目主要实现了四个核心功能:动漫展示、智能问答、简介生成和友好交互。…...
KOOK艺术馆入门必看:Streamlit缓存机制与大模型加载优化技巧
KOOK艺术馆入门必看:Streamlit缓存机制与大模型加载优化技巧 想象一下,你刚刚部署了璀璨星河艺术馆,这个界面美得像卢浮宫画廊的AI绘画工具。你兴奋地输入了第一个创意描述,点击生成按钮,然后...开始了漫长的等待。界…...
Wan2.2-I2V-A14B一文详解:适配CUDA 12.4与550.90.07驱动的稳定部署方案
Wan2.2-I2V-A14B一文详解:适配CUDA 12.4与550.90.07驱动的稳定部署方案 1. 镜像概述与核心价值 Wan2.2-I2V-A14B是一款专为文生视频任务优化的私有部署镜像,针对RTX 4090D 24GB显存显卡和CUDA 12.4环境进行了深度适配。这个镜像的最大特点是开箱即用&a…...
架构实战:清洁机器人梯控系统技术路线对比与非侵入式状态机设计
摘要: 商用清洁机器人(如大型洗地机)的跨层调度,是典型的 OT(操作技术)与 IT(信息技术)深度融合场景。在评估不同厂家的机器人梯控系统时,底层架构的安全性与物理容错率是…...
