我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL的监控原理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL的监控原理

[[424797]]

那么MySQL的日志文件有哪些类型呢? MySQL使用以下这几种类型的日志来记录服务器活动信息。

  • Error log错误日志:关于启动、关闭和异常情况的诊断消息(排查错误)
  • General query log通用查询日志:服务器从客户端接收到的所有语句(全局监控)
  • Slow query log慢速查询日志:执行时间较长的查询(性能优化)
  • Audit log审计日志:针对企业版的策略审计(主从搭配)
  • Binary log二进制日志:用于修改数据(备份用的到)

这5个类型的日志文件涵盖了所有MySQL的运行记录,是将来排查问题,优化性能的重要依据。很多经验丰富的DBA遇到问题就是先从这些日志文件下手分析的。重点之重,要考的。

日志文件的特点:占用大量的磁盘空间,存储在文件中,也可以存储在表中,但只有Slow query log慢速查询日志和General query log通用查询日志是可以存储在表中。可以用文本格式书写,但Binary log二进制日志除外。(因为Binary log中都是二进制格式啊!)

Error log错误日志:设置文件名set- -log- Error =filename来记录错误到给定的文件。或者在 UNIX或基于UNIX的系统中使用- -log-syslog服务器选项将错误消息发送到syslog系统日志上。

General query log通用查询日志:设置文件名set- -general_log_file=filename为日志查询。全局general_log和general_log_file服务器变量提供了对通用查询日志的运行时控制。将general_log设置为0(或OFF)以禁用日志,或设置为1(或ON)以启用日志。

Slow query log慢速查询日志:设置文件名set- -slow_query_log_file=filename以提供对慢速查询日志的运行时控制。设置slow_query_log为0禁用日志,设置为1启用日志,如果日志文件已经打开,则关闭该日志文件并打开新文件。

Binary log二进制日志:设置Set --log-bin以启用二进制日志记录。

服务器使用该选项值作为基本名称,在创建新日志文件时向基本名称添加一个递增的连续数字后缀。这些日志文件以二进制格式而不是文本格式存储。

Audit log审计日志:审计日志作为Enterprise Edition插件提供,当加载时,您可以使用该插件将事件记录到audit_log_file选项指定的文件中。审计不断写入审计日志,直到您删除插件,或者使用audit_log_policy=NONE选项设置关闭审计。通过在服务器启动时使用audit_log=FORCE_PLUS_PERMANENT作为选项来防止删除插件。

接下来我们逐个讲解

General query log通用查询日志可以使用general_log服务器选项启用,它是用来记录所执行语句的连接信息和详细信息。包括记录每个连接的时间和类型以及所有操作的进程ID,记录对所有表执行的所有语句,但不包括存储在二进制日志的更新操作行变化,因为这些不是更新操作以语句形式被存储的。而且General query log通用查询日志扩张的很快,但是如果以一个短时间内启用它,可以收集这些时间内所有活动的完整记录。

具体记录了些什么,我们在此举例说明,请看下面: 

  1. 1424 Query  update 
  2.  
  3. `mem__events`.events set lastUpdateTime=1397633565708 where id=7 1429 Query  update `mem__events`.events set lastUpdateTime=1397633565708 where id=4970 1424 Query  commit 1429 Query  commit 150526 7:32:46 1434 Connect root@localhost on mysql 1434 Query SET NAMES latin1 1434 Query SET character_set_results = NULL 

里面包含事件类型和查询内容,示例类型:查询、连接。

上面代码显示每个连接和查询的详细信息,记录每次连接的时间和所有操作的进程号。

Slow query log慢速查询日志可以通过使用slow_query_log服务器选项启用。用于记录执行时间超过指定阈值的语句。一般设定10秒(默认),可以使用long_query_time server选项更改此持续时间。可以指定微秒精度的秒数。可以记录不使用索引的语句,甚至是long_query_time下面的语句。比如用log_queries_not_using_indexes来实现。可以使用mysqldumpslow命令行程序查看Slow query log慢速查询日志。

Slow query log慢速查询日志是记录管理和复制语句。但默认情况下,慢速查询日志不记录管理语句。可以通过启用log_slow_admin_statements服务器选项来记录这些语句。默认情况下,从复制主机复制的语句不会出现在慢速查询日志中,即使它们超过了long_query_time服务器选项指定的时间。此时可以要记录这些语句,请启用log_slow_slave_statements服务器选项来实现。

如何过滤慢速查询日志事件?这有两个额外的服务器选项,您可以使用来过滤缓慢的查询日志输出:

第一个min_examined_row_limit:指定语句必须检查的最低行数,以便慢速查询日志记录该语句。

第二个log_throttle_queries_not_using_indexes:它指定慢速查询在60秒内记录的查询数量,因为它们不使用索引。慢速查询日志记录了这些查询的数量后,它汇总了在该时间段内花费在其余语句上的数量和总时间。默认情况下,该服务器选项的值为0,表示它记录所有此类查询。

举例说明: 

  1. Timedate-and-time # User@Host: root[root] @ localhost [127.0.0.1] Id: 7694 # Query_time: 1.010099 Lock_time: 0.000023 Rows_sent: 0 Rows_examined: 1 SET timestamp=timestamp;  update `mem__inventory`.`MysqlServer` set `timestamp`=timestamp where hid=x'08310BA6528CBF5783BBD95CE5B4561F'

例子包括服务器日期和时间,连接和查询信息,运行查询和持有锁的时间。

我们使用mysqldumpslow查看慢速查询日志,mysqldumpslow命令行程序总结了慢速查询日志的内容。它将类似的查询分组在一起,例如将数值参数更改为N,将字符串参数更改为'S',显示此类查询的数量以及运行查询所需的平均时间和总时间。使用-g选项提供一个搜索词,仅显示匹配搜索项的语句的摘要信息。也可以通过设定log_output服务器选项来指定表或文件日志输出。。

log_output服务器选项是用来配置慢速查询日志和通用查询日志。它包含一个或多个FILE、TABLE或NONE值(以逗号分隔)。默认情况下,它的值为FILE。NONE代表日志既不写文件,也不写表。NONE的存在会导致忽略FILE或TABLE。FILE表示日志分别写入由slow_query_log_file和general_log_file MySQL服务器选项指定的文件。在MySQL数据目录文件中的缺省值为hostname-slow.log和hostname.log。TABLE表示在mysql数据库中,慢速查询日志写到slow_log表,常规日志写到general_log表。

随着时间的推移,日志文件会占用更大的空间。定期备份和删除旧的日志文件,并重新记录到新的日志文件是DBA的日常工作之一。注意,如果使用二进制日志进行复制,请谨慎使用。备份后,刷新日志。刷新日志需要注意

创建新的二进制日志文件

关闭并重新打开常规和慢速查询日志文件。在创建新日志时,必须在刷新之前重命名当前日志文件。

可以创建自己的脚本或使用提供的mysql-log-rotate脚本来实现定期安排日志文件的循环。备份日志文件后,刷新日志以强制MySQL服务器开始写入新的日志文件。可以通过执行FLUSH LOGS SQL语句或执行mysqladmin flush-logs来实现。在刷新二进制日志会导致二进制日志记录顺序中的下一个文件重新开始。刷新普通和慢速查询日志时,这将关闭日志文件,重新打开它们,然后在相同的文件名下重新进行日志记录,要启动新的日志,请在刷新之前重命名现有的日志文件。

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL的监控原理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL的监控原理

MySQL的日志文件有哪些类型呢? MySQL使用以下这几种类型的日志来记录服务器活动信息。

深入理解kubernetes监控原理

本文将介绍其数据链路和实现原理,同时会阐述k8s中的监控体系。
kubernetesk8s2024-12-01

图解 | 监控系统 Prometheus 的原理

通过图解的方式,分别介绍了 Prometheus 的优势和劣势、指标收集、采集方式、Exporter、PromQL、监控告警,希望能给大家云原生的监控之路上带来一些启发。

OpenTelemetry 实战:gRPC 监控的实现原理

具体埋点过程中 OpenTelemetry 提供了许多解耦的 API,方便我们实现埋点所需要的业务逻辑,也会在后续的文章继续分析 OpenTelemetry 的一些设计原理和核心 API 的使用。
gRPC监控API2024-11-29

使用 DataAnt 监控 Apache APISIX的原理解析

目录背景信息原理简介一、采集配置二、数据可视化三、告警通知配置指南注意事项总结背景信息 Apache APISIX 是一个开源的云原生 API 网关,作为 API 网关,它兼具动态、实时、高性能等特点,提供了负载均衡、动态上游、灰度发布、服
2022-06-29

深入了解前端监控原理

前端监控分为性能监控和错误监控。其中监控又分为两个环节:数据采集和数据上报。本文主要讲的就是如何进行数据采集和数据上报。

从 Pulsar Client 的原理到它的监控面板

要实现这些功能就得在应用的Metrics 中加入相关的监控信息,但官方的 Java client 是没有暴露出这些指标的。但 Pulsar-client-go 是自带了这些指标的。
MetricsJava2024-11-30

promethus监控mysql

下载页面https://github.com/prometheus/mysqld_exporter/releases下载最新版本https://github.com/prometheus/mysqld_exporter/releases/d
2023-01-31

SpringBoot服务监控机制的原理是什么

这期内容当中小编将会给大家带来有关SpringBoot服务监控机制的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。SpringBoot 监控SpringBoot 中的监控可以分为 HTTP 端点
2023-06-14

使用DataAnt监控Apache APISIX的原理是什么

这篇文章主要介绍“使用DataAnt监控Apache APISIX的原理是什么”,在日常操作中,相信很多人在使用DataAnt监控Apache APISIX的原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
2023-07-02
2024-04-02

golang pprof监控goroutine thread统计的原理是什么

本篇内容介绍了“golang pprof监控goroutine thread统计的原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!引
2023-07-05

怎么实现spark的官网原生监控整理

这篇文章给大家介绍怎么实现spark的官网原生监控整理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一.官网解析1.官网位置截图Monitoring2.解释对于默认的webui 你访问完就不可以在看到了这样你不可能知道
2023-06-02

golang pprof 监控goroutine thread统计原理详解

这篇文章主要为大家介绍了golang pprof 监控goroutine thread统计原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-14

MySQL监控参数

1.查看xx库所有表信息参数详解Name(表名称)Engine(存储引擎)Version(版本)Row_format(行格式。对于MyISAM引擎,这可能是Dynamic,Fixed或Compressed。动态行的行长度可变例如Varchar或Blob类型字段
MySQL监控参数
2019-09-29

pmm-server监控mysql

https://blog.csdn.net/RunzIyy/article/details/104635680?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLea
pmm-server监控mysql
2017-09-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录