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

滚雪球学MySQL[7.3讲]:数据库日志与审计详解:从错误日志到审计日志的配置与使用

全文目录:

    • 前言
    • 7.3 日志与审计
      • 1. 日志类型与配置
        • 1.1 错误日志(Error Log)
          • 配置错误日志
          • 使用场景
          • 案例演示
        • 1.2 慢查询日志(Slow Query Log)
          • 配置慢查询日志
          • 使用场景
          • 案例演示
        • 1.3 查询日志(General Query Log)
          • 配置查询日志
        • 使用场景
      • 2. 审计日志的使用
        • 2.1 启用审计日志
        • 2.2 审计日志的应用场景
        • 案例演示
      • 3. 拓展与实际应用
        • 3.1 日志的集中化管理
        • 3.2 日志自动化审查
      • 4. 实例分析:慢查询日志优化
    • 小结
    • 下期预告:8.1 存储过程与函数

前言

在上一期中,我们深入探讨了数据库的安全策略,特别是如何通过权限管理、加密和用户认证来保护数据库免受未授权的访问。然而,尽管这些预防性措施非常重要,但仅靠安全策略并不能完全规避数据库运行中的潜在问题和安全隐患。要确保数据库的长期稳定、安全运行,日志与审计成为不可或缺的工具。通过对数据库活动进行记录和审查,管理员可以及时发现并解决系统中的故障和异常行为。

本期文章将深入探讨日志与审计,具体涵盖日志的类型及配置(如错误日志、慢查询日志)以及审计日志的使用与配置。我们将通过实际案例演示如何使用这些日志工具进行问题追踪和性能优化,帮助大家全面掌握数据库的日志管理方法。

最后,我们将简要预告下期内容存储过程与函数,继续讨论数据库开发中的重要技术。

7.3 日志与审计

在数据库的运行过程中,日志记录了数据库的活动,包括正常操作、异常错误和安全事件。日志不仅可以帮助管理员追踪系统的运行状态,还能为故障排查和系统优化提供有力的依据。根据日志类型的不同,日志记录的重点也有所不同:

1. 日志类型与配置

数据库提供了多种日志类型,每种日志在管理和调优中扮演着不同的角色。主要的日志类型包括:

  • 错误日志(Error Log):记录数据库运行过程中发生的错误和警告。
  • 查询日志(General Query Log):记录每条执行的SQL语句。
  • 慢查询日志(Slow Query Log):记录执行时间超出设定阈值的SQL查询。
  • 二进制日志(Binary Log):记录所有数据修改操作,用于数据恢复和复制。
  • 审计日志(Audit Log):记录用户活动、权限变更、查询等信息,主要用于安全审查。
1.1 错误日志(Error Log)

错误日志是最基本的日志类型,主要用于记录数据库启动、关闭以及运行过程中发生的严重错误和警告。错误日志在排查数据库启动问题、崩溃和连接失败等关键性问题时非常有用。

配置错误日志

在MySQL中,错误日志的默认配置通常已经启用,但可以通过修改my.cnf配置文件来自定义日志路径和日志级别。例如:

[mysqld]
log-error=/var/log/mysql/error.log

错误日志文件记录了数据库系统的重要信息,包括数据库的启动、关闭操作、严重错误和警告等。

使用场景
  • 启动和停止信息:错误日志会详细记录每次数据库的启动和关闭状态,如果数据库无法正常启动,错误日志是排查问题的首选工具。
  • 系统故障排查:在系统崩溃或连接问题时,错误日志记录了详细的错误信息,帮助管理员快速定位故障原因。
案例演示

例如,当MySQL服务器在启动时未能加载配置文件my.cnf,错误日志中可能会出现如下错误信息:

2024-10-01T08:30:15.123456Z 0 [ERROR] /usr/sbin/mysqld: Error while loading shared libraries: libmysqlclient.so: cannot open shared object file: No such file or directory

此时,管理员可以通过错误日志定位问题并解决文件缺失的错误。

1.2 慢查询日志(Slow Query Log)

慢查询日志是数据库性能优化的重要工具。它记录了所有执行时间超过设定阈值的查询。通过分析慢查询日志,数据库管理员可以识别出性能瓶颈并优化SQL查询。

配置慢查询日志

要启用慢查询日志,可以在MySQL的my.cnf文件中进行以下配置:

[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
  • slow_query_log:启用慢查询日志功能。
  • slow_query_log_file:指定日志文件的路径。
  • long_query_time:设定查询执行时间超过多少秒会被记录,默认为2秒。
使用场景
  • 性能调优:通过分析慢查询日志,管理员可以找到执行时间长的SQL语句,并通过创建索引或优化查询结构来提升查询性能。
  • 定期性能审查:定期检查慢查询日志,可以帮助发现系统中的潜在性能问题,确保数据库能够高效运行。
案例演示

假设我们发现某个查询在慢查询日志中被记录:

# Time: 2024-10-01T12:12:12.123456Z
# Query_time: 12.345  Lock_time: 0.000  Rows_sent: 1000  Rows_examined: 100000
SELECT * FROM large_table WHERE id = 123;

这条查询耗时12秒,明显是慢查询。通过分析,可以发现该查询可能需要优化索引,或调整查询条件来提升性能。

1.3 查询日志(General Query Log)

查询日志记录了数据库执行的每一条SQL语句,包括数据查询和数据修改。查询日志是排查应用程序和数据库之间问题的有力工具,但由于记录了大量细节,它通常仅在调试时启用,以避免性能下降。

配置查询日志

可以在my.cnf文件中启用查询日志:

[mysqld]
general_log = 1
general_log_file = /var/log/mysql/query.log
使用场景
  • 问题排查:在调试数据库时,查询日志可以帮助管理员检查每一条SQL执行情况,找出错误或效率低下的查询。
  • 应用程序调试:查询日志有助于开发人员了解应用程序在运行时发出的所有数据库请求。

2. 审计日志的使用

审计日志是一种专门用于安全审计的日志,记录数据库中的重要操作,包括用户登录、查询、修改数据和权限变更等。它主要用于满足合规性要求、进行安全分析和事件追踪。

2.1 启用审计日志

在MySQL中,审计日志通常通过插件或扩展功能启用。例如,在MariaDB中,可以通过以下方式启用审计日志:

[mysqld]
plugin-load-add = server_audit=server_audit.so
server_audit_logging = ON
server_audit_file_path = /var/log/mysql/audit.log
server_audit_events = CONNECT, QUERY, TABLE
  • server_audit_logging:启用审计日志功能。
  • server_audit_file_path:指定审计日志文件的保存位置。
  • server_audit_events:设定要记录的事件类型,常见事件包括用户连接、SQL查询和表操作。
2.2 审计日志的应用场景
  • 安全合规性:审计日志在金融、医疗等高敏感行业中非常重要,用于确保数据库活动符合规定的合规性要求。
  • 异常行为监控:通过审计日志,管理员可以监控用户行为,识别潜在的安全威胁,如非法访问或恶意操作。
  • 权限变更追踪:审计日志详细记录了数据库用户的权限修改情况,方便追溯权限问题的根源。
案例演示

假设某用户尝试访问敏感数据,审计日志会记录其查询操作,例如:

2024-10-01 14:14:14 root@localhost - CONNECT
2024-10-01 14:15:15 root@localhost - QUERY - SELECT * FROM confidential_data WHERE id=123;

通过审计日志,管理员可以清楚地看到用户的操作时间和查询内容,进一步分析是否存在安全风险。

3. 拓展与实际应用

3.1 日志的集中化管理

在大型分布式系统中,数据库日志可能分布在多个不同的服务器实例上。为了便于管理,许多企业会使用集中化的日志管理工具,如ELK Stack(Elasticsearch, Logstash, Kibana)Graylog,将不同服务器的日志收集并汇总到一个中心位置进行管理和分析。

  • ELK Stack:通过Logstash将分散在不同服务器上的日志数据收集并传输到Elasticsearch中进行索引,然后通过Kibana进行可视化分析和监控。
  • Graylog:是另一种流行的日志管理系统,可以集中收集、存储和分析来自多个服务器的日志信息。
3.2 日志自动化审查

随着数据库系统和日志数据量的增加,人工审查日志变得非常困难且耗时。为了解决这一问题,企业可以引入自动化审

查工具或脚本,定期分析慢查询日志、错误日志和审计日志,并生成报告。此类工具能够帮助数据库管理员快速识别性能问题和安全隐患,避免潜在的威胁升级。

4. 实例分析:慢查询日志优化

假设在慢查询日志中发现了一条执行时间较长的查询:

SELECT * FROM products WHERE category_id = 10 AND price > 500;

通过分析日志,发现该查询执行时间过长,原因是缺少索引。为了优化查询,我们可以在category_idprice字段上创建索引:

CREATE INDEX idx_category_price ON products(category_id, price);

优化后,重新执行该查询,可以通过慢查询日志确认查询性能是否得到了显著改善。

小结

本期文章详细介绍了数据库中的日志类型及其配置,特别是错误日志慢查询日志的使用,帮助管理员有效进行故障排查和性能调优。此外,审计日志提供了安全合规性审查的重要依据,能够帮助企业实时监控数据库用户行为,确保系统安全。

下期预告:8.1 存储过程与函数

日志记录与分析是数据库管理中的基础技能,而存储过程与函数则是提升数据库开发效率的核心工具。下期我们将深入探讨如何通过存储过程和函数来简化复杂的业务逻辑,提高数据库的可重用性和可维护性,敬请期待!

相关文章:

滚雪球学MySQL[7.3讲]:数据库日志与审计详解:从错误日志到审计日志的配置与使用

全文目录: 前言7.3 日志与审计1. 日志类型与配置1.1 错误日志(Error Log)配置错误日志使用场景案例演示 1.2 慢查询日志(Slow Query Log)配置慢查询日志使用场景案例演示 1.3 查询日志(General Query Log&a…...

网关的作用及其高可用性设计详解

引言 在现代分布式系统架构中,网关(Gateway)是一个关键组件。它作为客户端与后端服务之间的桥梁,不仅提供了请求路由、负载均衡、安全认证、流量控制等功能,还能够保护后端服务的安全和稳定性。网关的设计和高可用性对…...

Vortex GPGPU的github流程跑通与功能模块波形探索

文章目录 前言一、跟着官方文档走一遍二、cache子模块的波形仿真2.1 必要的文件内容解释2.2 cache子模块波形仿真——目前环境没啥问题了,就vcd因为配置问题出不来 总结 前言 看了那么久的verilog代码和文档,但还是没怎么接触过Vortex GPGPU全流程跑通与…...

10.2 Linux_并发_进程相关函数

创建子进程 函数声明如下: pid_t fork(void); 返回值:失败返回-1,成功返回两次,子进程获得0(系统分配),父进程获得子进程的pid 注意:fork创建子进程,实际上就是将父进程复制一遍作为子进程&…...

【深度学习基础模型】玻尔兹曼机BM|受限玻尔兹曼机RBM|深度置信网络DBN详细理解并附实现代码。

【深度学习基础模型】玻尔兹曼机Boltzmann machines (BM)|受限玻尔兹曼机Restricted Boltzmann machines (RBM)|深度置信网络Deep belief networks (DBN)详细理解并附实现代码。 【深度学习基础模型】玻尔兹曼机Boltzmann machines (BM)|受限玻尔兹曼机Restricted Boltzmann m…...

滑动窗口->dd爱框框

1.题目: 2.题解: 2.1为什么用滑动窗口优化: 因为元素都是大于0的 所以:当找到大于等于x的值时,right可以不用返回 两个指针都往后走;因此可以使用滑动窗口优化暴力解法 2.2:滑动窗口具体使用步…...

Python从入门到高手4.1节-掌握条件控制语句

目录 4.1.1 理解条件控制 4.1.2 if, elif, else 4.1.3 条件表达式 4.1.4 条件控制可以嵌套 4.1.5 if语句的三元运算 4.1.6 国庆节快乐 4.1.1 理解条件控制 在日常生活中,我们常喜欢说如果, "如果怎么样,那么就会怎么样"。"如果&qu…...

使用Qt实现实时数据动态绘制的折线图示例

基于Qt的 QChartView 和定时器来动态绘制折线图。它通过动画的方式逐步将数据点添加到图表上,并动态更新坐标轴的范围,提供了一个可以实时更新数据的折线图应用。以下是对代码的详细介绍及其功能解析: 代码概述 该程序使用Qt的 QChartView…...

【人人保-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…...

Redis6 多线程模型

优质博文:IT-BLOG-CN 一、单线程的优缺点 对于一个请求操作Redis主要做3件事情:从客户端读取数据/解析、执行Redis命令、回写数据给客户端。所以主线程其实就是把所有操作的这3件事情串行一起执行,因为是基于内存,所以执行速度非…...

Python的异步编程

什么是协程? 协程不是计算机系统提供,程序员人为创造。 协程也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。 实现协程有那么几种方法: greenlet&…...

初识Linux · 进程等待

目录 前言: 进程等待是什么 为什么需要进程等待 进程等待都在做什么 前言: 通过上文的学习,我们了解了进程终止,知道终止是在干什么,终止的三种情况,以及有了退出码,错误码的概念&#xff…...

面向对象建模

UML 关系 UML 关系主要有:依赖、关联、聚合、组合、实现、继承。 类图 #mermaid-svg-jcAjcVcPmgmWDpcI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jcAjcVcPmgmWDpcI .error-icon{fill:#552222;}#m…...

MetaJUI v0.4 遇到的一些问题及解决办法记录

1、Unity3d 版本 2022.3.29f1。 2、MetaJUI v0.4 的下载,https://download.csdn.net/download/xingchengaiwei/89334848 3、将MetaJUI v0.4解压,用Unity3d 打开项目,会出现如下问题,按照图中提示操作即可。 4、打开工程后会出现…...

从零开始学习OMNeT++系列第二弹——新建一个OMNeT++的工程

上一篇第一弹介绍了OMNeT是什么以及如何安装OMNeT,现在来说一下如何新建一个自己的OMNeT的工程。 在 Omnet安装完成后,samples/tictoc 中有该例子的完整文件,你可以立刻运行该文件看他是怎么工作的,不过更推荐按接下来的步骤一步…...

【Android】布局优化—include,merge,ViewStub的使用方法

引言 1.重要性 在Android应用开发中,布局是用户界面的基础。一个高效的布局不仅能提升用户体验,还能显著改善应用的性能。随着应用功能的复杂性增加,布局的优化变得尤为重要。优化布局能够减少渲染时间,提高响应速度&#xff0c…...

传奇外网架设教程带图文解说—Gee引擎

架设前准备工作: ①通过百度网盘下载版本、补丁、客户端和DBC2000。版本解压到D盘,客户端解压到D盘或是E盘,补丁先不解压 ②安装和配置DBC2000,有些版本不一定用的是DBC2000数据库,看引擎默认的数据库是哪个 DBC数据…...

MySQL | excel数据输出insert语句

需求 在日常生产运维过程中,有很多需要进行人工梳理的excel数据,到了研发这一侧需要转为sql语句进行数据修正,如何输出insert插入语句? 方案 在空白列插入,选择需要的列 "INSERT INTO tab_name1 (name, desc) …...

足球青训俱乐部管理:Spring Boot技术驱动

摘 要 随着社会经济的快速发展,人们对足球俱乐部的需求日益增加,加快了足球健身俱乐部的发展,足球俱乐部管理工作日益繁忙,传统的管理方式已经无法满足足球俱乐部管理需求,因此,为了提高足球俱乐部管理效率…...

一次实践:给自己的手机摄像头进行相机标定

文章目录 1. 问题引入2. 准备工作2.1 标定场2.2 相机拍摄 3. 基本原理3.1 成像原理3.2 畸变校正 4. 标定解算4.1 代码实现4.2 详细解析4.2.1 解算实现4.2.2 提取点位 4.3 解算结果 5. 问题补充 1. 问题引入 不得不说,现在的计算机视觉技术已经发展到足够成熟的阶段…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...