数据库监控

article/2025/10/26 3:44:20

                                            数据库监控

一、数据库监控介绍

    

    

    1、对什么进行监控

        (1) 对数据库服务可用性进行监控

            数据库进程或是端口存在并不意味着数据库就是可用的;

            通过网络连接到数据库并且确定数据库是可以对外提供服务的。

        (2) 对数据库性能进行监控

            QPS和TPS;

            并发线程数量;

            对Innodb阻塞和死锁进行监控。

        (3) 对主从复制进行监控

            主从复制链路状态的监控;

            主从复制延迟的监控;

            定期的确认主从复制的数据是否一致。

        (4) 对服务器资源的监控

            磁盘空间;CPU的使用情况;内存的使用情况;Swap分区的使用情况;网络IO的使用情况

                服务器磁盘空间大并不意味着MySQL数据库服务能使用的空间就足够大;

                无论是数据目录还是日志目录的磁盘空间被占满,都会出现MySQL无法对外服务的情况。

二、数据库可用性监控

    1、如何确认数据库是否可以通过网络连接

        

        一:通过网络连接数据库时,程序建立数据库连接,还要通过一些防火墙等硬件设备,或者像iptable这种软件过滤之后才能连接到数据库。这其中呢,就可能存在一些限制,而造成程序无法连接到服务器的情况。

        二、MySQL的TCP/IP连接存在可能被占满的情况

        通常使用以下几种方式中的一种:

            方式一:mysqladmin -umonitor_user -p -h ping

            方式二:telnet ip db_port

            方式三:使用程序通过网络建立数据库连接

    2、如何确认数据库是否可读写

        方式一:检查数据库的read_only参数是否为off

        方式二:建立监控表并对表中数据进行读写操作

        方式三:执行简单的查询 select @@version

    3、如何监控数据库的连接数

        可以连接到MySQL的线程数是有限制的,有很多因素都会造成数据库的连接数突然的增长(出现阻塞、像Memcahe这样的缓存失效都可能造成数据库连接数的暴增)。

        获取数据库允许的最大连接数:

            show variables like 'max_connections';

        获取数据库当前的连接数:

            show global status like 'Threads_connected';

        判断是否需要报警:

            Threads_connected / max_connections > 0.8          

三、数据库性能监控

    记录性能监控过程中所采集到的数据库的状态

    1、数据库可用性监控
        show global status:可以列出MySQL服务器运行各种状态值。

        (1) 如何计算QPS和TPS

            QPS:每秒钟数据库所执行的查询的数量(包括了数据库所处理的所有请求)。

            QPS = (Queries2 - Queries1) / (Uptime_since_flush_status2 - Uptime_since_flush_status1)    # 两次采样的差值 / 两次采样的时间间隔

            TPS:每秒钟所处理的事物的数量,也就是每秒钟所处理的UPDATE、DELETE、INSERT这样的请求的数量。从定义上可以看出TPS实际上是OPS的一个子集。    

            TPS = ((Com_insert2 + Com_update2 + Com_delete2) - (Com_insert1 + Com_update1 + Com_delete1)) / (Uptime_since_flush_status2 - Uptime_since_flush_status1) 

        (2) 如何监控数据库的并发请求数量

            数据库系统的性能会随着并发处理请求数量的增加而下降。

            show global status like 'Threads_running';

            并发处理的数量通常会远小于同一时间连接到数据库的线程的数量。数据库出现大量阻塞的时候,可能会造成数据库并发请求数量的突增。

        (3) 如何监控Innodb的阻塞

SELECT b.trx_mysql_thread_id AS '被阻塞线程', b.trx_query AS '被阻塞SQL', c.trx_mysql_thread_id AS '阻塞线程', 
c.trx_query AS '阻塞SQL',(UNIX_TIMESTAMP()-UNIX_TIMESTAMP(c.trx_started)) AS '阻塞时间'
FROM information_schema.INNODB_LOCK_WAITS a
JOIN information_schema.INNODB_TRX b ON a.requesting_trx_id=b.trx_id
JOIN information_schema.INNODB_TRX c ON a.blocking_trx_id=c.trx_id
WHERE (UNIX_TIMESTAMP()-UNIX_TIMESTAMP(c.trx_started)) > 60

            实例:

                打开两个终端分别连接上数据库;

                终端一:

                    a. 查看session的连接号:

                        select connection_id();

                        

                    b. 将Innodb锁的自动超时时间改为180秒:

                        set global innodb_lock_wait_timeout=180;

                        

                    c. 查询t表数据:

                        select * from t;

                        

                    d. 开启事物:

                        begin;

                        

                    e. 为t表开启排查锁:

                        select * from t for update;

                        

                终端二:

                    a. 查看session的连接号:

                         select connection_id();

                         

                    b. 开启事物:

                        begin;

                        

                    c. 为t表开启排查锁:

                        select * from t for update;

                        

                在MySQL可视化工具中查询阻塞信息:

                    

  四、MySQL主从复制监控

    1、如何监控主从复制链路的状态

        

    2、如何监控主从复制延迟

        show slave status;

        Seconds_Behind_Master: 主从之间延迟的秒数,根据同步到从服务器上的主服务器的binlog和已经在从服务器上重新执行过的binlog日志之间的时间差来决定的。存在很多种情况都会造成数据的不准确,例如当网络存在问题的时候,主服务器还有大量的bionlog没同步到从服务器上,同时同步到从服务器上的binlog都已经被重用完了,在这种情况下,主从之间是存在很大的延迟的。

        

        为了更加准确的反应延迟,我们需要使用使用多线程的程序同时对于主从服务器的状态来进行检查:

        主服务器上:

            show master status \G;

            主上的二进制日志文件名和偏移量:

                

        从服务器上:

            show slave status \G

            从主上已经传输到从上的主上的二进制日志文件名和偏移量:

            

            已经传输完成的主上二进制日志的名字和偏移量:

            

        当每次修复完主从复制,都要检查主从复制数据的一致性。

    3、如何验证主从复制的数据是否一致

        pt-table-checksum u=dba,p='PassWord' --databases mysql --replicate test.checksums

        在主服务器数据库运行即可,它会主动发现主库下所有从库信息,对所有从库指定的数据库数据进行检测。

        u:数据库账号用户名 

        p:数据库账号密码 

        databases:要检查的数据库的名字  

        replicate:指定在test库下创建checksums表,并且将数据写入到这张检测表中

        创建账户SQL:

            GRANT SELECT, PROCESS, SUPER, REPLICATION, SLAVE ON *.* TO 'dba'@'ip' IDENTIFIED BY ''PassWord;


http://chatgpt.dhexx.cn/article/8ylExf0Q.shtml

相关文章

MySQL - 数据库的监控方式

对于当前数据库的监控方式有很多,分为数据库自带、商用、开源三大类,每一种都有各自的特色; 而对于 mysql 数据库由于其有很高的社区活跃度,监控方式更是多种多样,不管哪种监控方式最核心的就是监控数据,获…

现在的SQLSERVER数据库监控软件有哪些?

现在的SQLSERVER数据库监控软件有哪些? 收集了一下当前SQLSERVER数据库监控软件,发现开源免费的真的是“没有” Questsoftware Quests spotlight(收费) http://www.quest.com/search/search-results.aspx?qspotlight Ideras S…

2019年最好用的6款数据库监控工具

为了让数据发挥最大的价值,通常我们都会采用数据库监控工具,本文将为大家介绍 6 款最好用的数据库监控工具。 "数据就是一切!"我们都曾听过这种大胆的说法,但其实事实真是这样,而且数据还无处不在。如今&…

2019 年最好用的 7 款数据库监控工具

活动预告:数据库百家争鸣的背景下,Oracle究竟值不值得继续学习?未来Oracle DBA向何处去?如何在新的环境下站稳脚跟? 本周六,在北京将迎来一年一度的 ACOUG年会,在本次年会上,行业技术…

【正版软件】Navicat Monitor 实时数据库监控工具,一套安全、简单而且无代理的远程服务器监控工具。

简言 Navicat Monitor 是一套安全、简单而且无代理的远程服务器监控工具。它具有强大的功能使你的监控发挥最大效用。受监控的服务器包括 MySQL、MariaDB 和 SQL Server,并与 Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure、阿里云、腾讯云和华为云等…

数据库监控工具

数据库监控是Applications Manager重要功能之一,它能够帮助数据库管理员(DBA)和系统管理员监控包含Oracle、SQL Server、MySQL、Sybase、IBM DB2等多种类异构型的数据库环境。作为无代理的数据库监控工具,Applications Manager通过执行数据库查询来采集性…

最好用的数据库监控工具和数据库知识

数据库监控的目的? 数据库监控的主要目标是确保数据在需要时是可用的。这听起来很简单,但实际操作却相当复杂,部分原因在于组件的数量和种类。从硬件到软件,数据库监控工具必须始终确保所有组件都是可用的,并且在正常…

数据库监控工具及相关知识

数据库运行状态监控,是对数据库各种运行指标进行全方位实时监控。使之能够提前发现和识别数据库异常以及潜在的性能问题,并及时将数据库异常报告给管理员,通过针对各项运行指标的统计分析报表,帮助管理员、运维人员、决策者多视角…

十大开源云监控工具

监控和测试工具分为实时数据库、度量采集者、可视化工具、意见反馈工具、日志记录器等等。在过去的几年里,开源产品和商业监控应用程序发生了爆炸式增长,下面是其中10个最受欢迎的开源云监控工具。 Prometheus Prometheus是一个领先的开源云监控解决方案…

MySQL 内置的监控工具介绍及使用篇

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

MySQL | 六个最常用的 MySQL 数据库监控工

1 概述 MySQL 是企业广泛采用开源 DBMS 之一。如何对数据库的运行情况进行监视,发现数据库中的潜在问题,日益变得重要。面对市面上层出不穷的数据库监控软件,如何选择却称了一个头痛问题。 本文罗列了六个最常的 MySQL 数据库监控工具&…

推荐 5 款数据库性能监控软件,附下载

点击蓝色“有关SQL”关注我哟 加个“星标”,天天与10000人一起快乐成长 图 | L 今天要介绍的是 5 款数据库监控软件。 初听“数据库监控”,我知道很多小白,肯定要和黑客联系起来: "哇,那多牛皮,居然可以监控数据库…

BCD码简介及其与十进制数字字符串之间的转换

在ASCII码中,0到10的二进制分别表示如下。 而BCD码中,0-9的每位仍用一个字节(8位)来表示。因此,因此规则的重合,在数据存储上,BCD码仅用字符串存储即可,即数字12存储为字符串“12”。…

浅谈BCD码同二进制转换

浅谈BCD码同二进制转换 一、BCD码1、BCD码概述2、BCD分类1、有权码2、无权码 3、BCD运算问题 二、二进制BCD码1、原理实现2、模块划分3、仿真调试4、仿真验证 三、BCD码转二进制1、原理实现2、模块划分3、仿真验证 一、BCD码 1、BCD码概述 BCD码(Binary-Coded Dec…

BCD格式及与十进制/十六进制的转换

本文框架 前言1. BCD码是什么?2. 不同进制与BCD码之间的转换2.1 十进制与BCD码的转换2.1.1 十进制转换为BCD码2.1.2 BCD码转换为十进制 2.2 十六进制与BCD码的转换 前言 本系列Autosar 诊断入门介绍,会详细介绍诊断相关基础知识,如您对诊断实…

BCD码详解

BCD码的种类 BCD码可分为有权码和无权码两类:有权BCD码有8421码、2421码、5421码,其中8421码是最常用的;无权BCD码有余3码、格雷码等。 8421 BCD码 8421 BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位…

二进制码转BCD码

在单片机里面,如:显示个温度值,这时,要取一个数的个位、十位、百位,可以用/和 %(求商和求余)来解决。 但是,在FPGA里面用求商和求余将会非常消耗资源,这样就必须用到二进…

【C语言】BCD码、十进制互相转换

目录 0. 前言: 1. BCD码 2. 算法原理 3. 进制转换 3.1 两位BCD码的转换: 3.2 其他进制转换 3.3 任意进制转二进制 参考资料: 0. 前言: 记录今天用15单片机写DS1302时钟芯片程序的时候遇到的问题 时间显示是这个样的 0 1…

什么是 BCD(二进制编码的十进制)

BCD 是一位十进制数,由代表 0 到 9 的四位二进制数字表示。 当寄存器值以十六进制表示时,可以原样读取为十进制数,这对于处理十进制数的函数来说非常方便。 二进制数的 4 位可以表示为 0 到 15,但只有低 10 位被视为有效数字。 …

十进制转8421_BCD码

目录 一、BCD码简介 二、十进制转8421BCD码转换思路 三、程序编写 四、仿真验证 总结 一、BCD码简介 BCD码(Binary-Coded Decimal‎),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,常…