当前位置: 首页 > news >正文

【MySQL】如何判断一个数据库是否出问题

在实际的应用中,其实大多数是主从结构。而采用主备,一般都需要一定的费用。
在这里插入图片描述
对于主备,如果主机故障,那么只需要直接将流量打到备机就可以,但是对于一主多从,还需要将从库连接到主库上。

对于切换的操作,一种是主动切换,(人为升级配置),另一种是被动切换,(主机故障)。那么如何判断一个数据库是否出问题。

select 1 判断

set global innodb_thread_concurrency=1;
session Asession 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 用途&#xff1a;列出连接到计算机的所有 Android 设备。详解&#xff1a;执行该命令后&#xff0c;ADB 将扫描连接到计算机的所有 Android 设备&#xff0c;并列出它们的序列号。 adb connect <device> 用途&#xff1a;连接到指定 IP 地址的 Android 设备。…...

类的函数成员(三):拷贝构造函数

一.什么是拷贝构造函数&#xff1f; 1.1 概念 同一个类的对象在内存中有完全相同的结构&#xff0c;如果作为一个整体进行复制或称拷贝是完全可行的。这个拷贝过程只需要拷贝数据成员&#xff0c;而函数成员是共用的&#xff08;只有一份拷贝&#xff09;。 在建立对象…...

IDEA通过StartApplication方式启动springboot项目报错包不存在(相关依赖都有且通过java -jar方式能启动)解决方法

现象&#xff1a;IDEA2020通过StartApplication方式启动springboot项目报错&#xff1a;包xxx不存在、找不到符号&#xff0c;明明相关依赖都有&#xff0c;而且通过java -jar方式能启动也能启动&#xff1b;解决方法&#xff1a;mvn idea:idea...

全志V853开发板适配7寸RGB屏:Linux DRM驱动与设备树配置实战

1. 项目概述与核心价值最近在折腾百问网的100ASK_V853-PRO开发板&#xff0c;这块板子用的是全志V853这颗高性能的AIoT芯片&#xff0c;本身接口资源挺丰富的。但官方默认的配套屏幕是5寸或者更小的MIPI屏&#xff0c;对于很多需要大屏交互的应用场景&#xff0c;比如智能中控、…...

Windows 11系统优化神器:Win11Debloat一站式去广告与性能提升指南

Windows 11系统优化神器&#xff1a;Win11Debloat一站式去广告与性能提升指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declu…...

探索OpenHarmony蓝牙BLE测试HAP:高效验证与优化

探索OpenHarmony蓝牙BLE测试HAP&#xff1a;高效验证与优化 【下载地址】OpenHarmony鸿蒙蓝牙ble测试hap 本仓库提供的是用于OpenHarmony系统下的蓝牙BLE&#xff08;低功耗蓝牙&#xff09;测试HAP&#xff08;HarmonyOS Ability Package&#xff09;。此HAP旨在帮助开发者和测…...

零基础极速上手教程:用AI建站工具10分钟生成你的第一个网站

你是不是也想过拥有一个属于自己的网站&#xff0c;但总觉得那是程序员才干得了的事&#xff1f;或者你曾经试过一些建站工具&#xff0c;结果被复杂的后台、密密麻麻的选项和所谓的「可视化拖拽」搞得晕头转向&#xff1f;别担心&#xff0c;今天这篇教程&#xff0c;就是专门…...

NotebookLM权限颗粒度管控实战:从入门到精通的7步精准授权法(含Google内部RBAC配置模板)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM权限控制设置概览 NotebookLM 是 Google 推出的基于用户自有文档构建个性化 AI 助手的实验性工具&#xff0c;其权限模型聚焦于数据主权与最小化访问原则。默认状态下&#xff0c;所有上传文…...

别再只认Revit了!盘点7种主流BIM数据格式(RVT/IFC/FBX...)的优缺点与选型指南

建筑数字化进阶指南&#xff1a;7大BIM数据格式深度解析与实战选型策略 在建筑信息模型&#xff08;BIM&#xff09;与地理信息系统&#xff08;GIS&#xff09;加速融合的今天&#xff0c;数据格式的选择直接影响着项目协同效率与成果交付质量。当设计院的Revit模型需要与施工…...

别再只会用menuconfig了!手把手教你为ESP32项目定制专属Kconfig配置菜单

从配置使用者到设计者&#xff1a;ESP32项目中的Kconfig高级定制指南 在ESP-IDF开发环境中&#xff0c;menuconfig几乎是每个开发者每天都要接触的工具。但大多数开发者仅仅停留在"使用者"层面——他们知道如何勾选选项、调整参数&#xff0c;却很少思考这些配置菜单…...

智慧桥梁之桥梁裂缝 钢筋裸露识别 墙面裂缝分割数据集 桥梁病害数据集 yolo格式 图像分割数据集地10171期

病理研究相关数据集简介项目详情数据集类别聚焦病理研究领域&#xff0c;涵盖多种与病理相关的图像类别&#xff0c;可能包含不同器官、组织或疾病类型对应的病理图像&#xff0c;例如常见的炎症、肿瘤等病理状态下的样本图像分类数据集数量总数3210张&#xff0c;但从数据集命…...

PSoC时钟系统深度解析:从架构原理到配置避坑指南

1. 项目概述&#xff1a;为什么PSoC的时钟值得你花时间研究&#xff1f;如果你刚开始接触Cypress&#xff08;现Infineon&#xff09;的PSoC系列微控制器&#xff0c;可能会觉得它的开发环境PSoC Creator功能强大但有点复杂。在众多需要配置的模块里&#xff0c;时钟系统往往是…...