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

MySQL 常见日志清理策略

前言:

MySQL 数据库服务器使用多种类型的日志来记录操作和事件,这对于故障诊断、审计和性能分析非常重要。然而,这些日志文件会随着时间的推移而不断增长,可能会占用大量的磁盘空间。因此,定期清理这些日志是必要的,本篇文章我们一起来学习下如何清理 MySQL 中的日志文件。

二进制日志 (Binary Log)

binlog 记录了数据库所有的 DDL(数据定义语言)和 DML(数据操作语言)更改操作,一般都是建议开启 binlog 的,要注意的是 binlog 会占用大量磁盘空间,特别是你的数据库特别繁忙的情况下。这个时候就要制定清理策略了。

MySQL 5.7 可以通过 expire_logs_days 参数来设置 binlog 删除时间,在 my.cnf 配置文件中设置 expire_logs_days 参数,指定二进制日志文件的过期天数,过期的日志文件将会自动被删除。在 MySQL 8.0 中建议使用 binlog_expire_logs_seconds 参数,此参数同样是控制二进制文件过期时间,单位是秒。binlog 具体要保留多久,可以根据磁盘空间决定,磁盘充足可以多保留,一般建议至少保留 7 天。

除了通过设置参数自动清理外,binlog 还可以使用 PURGE BINARY LOGS 命令来手动执行清理。例如,使用 purge binary logs to ‘mysql-bin.000009’ 来删除 mysql-bin.000009 之前的日志文件,或者使用 purge binary logs before ‘2024-07-15 00:00:00’ 来删除指定时间之前的日志文件。

通用查询日志 (General Query Log)

MySQL 的 general_log 是记录所有到达 MySQL 服务器的 SQL 语句的日志。由于它记录了所有的 SQL 语句,包括连接、查询、更新等操作,因此其日志量可能增长非常迅速,通常在生产环境中不建议开启此功能,以免影响性能。如果你的数据库为了等保评测或者其他原因开启了 general_log ,那就要及时制定清理策略了。

官方并没有提供用于清理 general_log 的参数或命令,因此清理 general_log 只能各显神通了,一般情况下可以通过写 shell 脚本来执行清理,比如说每天凌晨进行日志切换,删除几天前的日志文件。也可以使用 logrotate 功能来配置 general_log 自动轮转及清理。

错误日志 (Error Log)

错误日志记录 MySQL 服务器启动、关闭及运行时发生的错误及警告信息。一般是默认开启的,不过错误日志增长速度很慢,通常不需要频繁清理,可以手动清理或设置定期任务清理旧的日志文件。错误日志保留时间可以更长些。

慢查询日志 (Slow Query Log)

慢日志主要用于记录执行时间超过设定阈值的 SQL 查询。慢查询日志对于数据库的性能优化非常重要,因为它可以帮助数据库管理员和开发者识别和优化那些执行效率低下的查询。慢日志也是建议开启的。

通常情况下,我们可以根据系统情况来设置慢 SQL 阈值,比如 1s 或 3s 。慢日志一般情况下增长速度也不是很快,只要持续进行 SQL 优化,慢日志会越来越少的。通常慢日志也不需要频繁清理,一般我们可以每一周或每一月重命名一次,然后保留几份这样来制定清理策略,可以交由 shell 脚本自动执行。

审计日志 (Audit Log)

MySQL 社区版官方并没有提供审计日志,如果想开启审计日志,只能借助 MariaDB 或 Percona Server 等其他审计插件。审计日志增长速度也比较快,一般审计插件都提供清理参数,比如说日志文件到达多少 M 自动轮换,保留几份日志文件等,一定要设置好此类参数,以防占用大量磁盘空间。

中继日志 (Relay Log)

中继日志是 MySQL 复制过程中用于存储从主服务器接收的二进制日志事件的临时日志文件。这些日志文件由从服务器用来应用来自主服务器的更新。中继日志只存在于从服务器上,relay log 文件会随着事件被应用而逐渐增长,因此也需要适当的清理策略来管理这些文件。

MySQL 官方提供了 relay_log_pure 参数,此参数决定了 relay log 文件在被完全应用后是否应该被自动删除。这个参数有两个可能的值:ON 和 OFF ,设置为 ON 代表当中继日志应用完成后会自动删除,OFF 则不会自动删除。一般情况下,建议开启此参数,这样 relay log 应用完就会被清理掉,不会占用大量磁盘空间。

如果你的从服务器要求关闭 relay_log_pure 参数,例如在 MHA 高可用架构下,为了确保在故障转移时能够使用 relay log 进行恢复,通常需要禁用从服务器上的中继日志自动清理功能。这个时候就要想其他办法来清理 relay log 了。MHA 提供了一个名为 purge_relay_logs 的 perl 脚本,可通过 purge_relay_logs 脚本配合 cronjob 来完成此清理任务。若 purge_relay_logs 脚本无法使用,那么只能自己写 shell 脚本了,比如可以定期将 relay_log_pure 设为 ON ,然后执行 flush relay logs 后,再将 relay_log_pure 设为 OFF ,这样操作下来一般也能实现清理 relay log 。实在不行我们还可以使用 find 命令来找到几天前的日志文件,然后直接 rm 清理掉,不过用 find 找到后直接 rm 删除这种方法会导致 relay-log.indx 索引文件中记录 relay log 与实际存在的不匹配,所以直接 rm 删除 relay log 后还要记得更新下 relay-log.indx 索引文件。

总结:

本篇文章简单介绍了 MySQL 中六种常见日志及其清理策略,不同环境可以采用不同的清理策略,本文只是提供一种思路,方法各种各样,重要的是要根据实际情况制定合理的日志保留策略,并确保不会影响到数据库的正常运行和备份需求。

相关文章:

MySQL 常见日志清理策略

前言: MySQL 数据库服务器使用多种类型的日志来记录操作和事件,这对于故障诊断、审计和性能分析非常重要。然而,这些日志文件会随着时间的推移而不断增长,可能会占用大量的磁盘空间。因此,定期清理这些日志是必要的&a…...

3大管人绝招让你的手下心服口服

3大管人绝招让你的手下心服口服 一:差异化管理,玩弄人性 谁赞成,谁反对,看清楚谁顺从自己,谁反对自己之后,接下来要做的便是区别对待。 给听话的下属最好的资源、最轻松简单的工作、最高的待遇&#xf…...

useImperativeHandle 是什么?你可以理解为 vue3 的 expose

useImperativeHandle 确实类似于 Vue 3 的 expose,两者都用于控制子组件向父组件暴露的接口。 在 React 中,useImperativeHandle 需要与 forwardRef 一起使用,原因如下: 转发引用:forwardRef 允许父组件将 ref 传递给…...

《Techporters架构搭建》-Day05 属性校验

属性校验 前言Validated基础用法集合校验分组校验嵌套校验自定义校验器 源码地址 前言 在项目开发过程中,经常遇到需要对传递的参数进行校验,比如某个参数字段是否为空、值的取值是否在约定范围、格式是否合法等等,最原始的写法,…...

HTTP的场景实践

HTTP的场景实践:任选一个浏览器,对于其涉及的请求中的缓存策略展开具体分析 1. 强缓存: Cache-Control用于指定缓存的最长有效时间。 Expires用于指定资源过期的日期。 2. 协商缓存: ETag用于标识资源的唯一标识符,…...

MySQL:表的设计原则和聚合函数

所属专栏:MySQL学习 💎1. 表的设计原则 1. 从需求中找到类,类对应到数据库中的实体,实体在数据库中表现为一张一张的表,类中的属性对应着表中的字段 2. 确定类与类的对应关系 3. 使用SQL去创建具体的表 范式&#xff1…...

介绍springmvc-水文

Spring MVC 是一个基于 Java 的开源 Web 框架,它是 Spring Framework 的一部分。Spring MVC 提供了一个架构,用于开发灵活、可扩展的 Web 应用程序。 Spring MVC 的主要特点包括: 基于模型-视图-控制器(MVC)的架构&am…...

uni-app学习笔记

一、下载HBuilder https://www.dcloud.io/hbuilderx.html 上述网址下载对应版本,下载完成后进行解压,不需要安装,解压完成后,点击HBuilder X.exe文件进行运行程序 二、创建uni-app项目 此处我是按照文档创建的uni-ui项目模板…...

Windows Server修改远程桌面端口

新建入站规则 填写端口 允许连接 修改远程桌面端口 winR打开注册表 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp修改PortNumber为新端口 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wi…...

界面组件Kendo UI for Vue 2024 Q2亮点 - 发布一系列新组件

随着最新的2024年第二季度发布,Kendo UI for Vue为应用程序开发设定了标准,包括生成式AI集成、增强的设计系统功能和可访问的数据可视化。新的2024年第二季度版本为应用程序界面提供了人工智能(AI)提示,从设计到代码的生产力增强、可访问性改…...

达梦数据库 逻辑备份还原

达梦的逻辑备份还原 1.背景2.要求3.实验步骤3.1 相关术语3.2 dexp逻辑导出3.2.1 使用dexp工具3.2.2 dexp相关参数含义3.2.3 四种级别导出3.2.3.1 FULL3.2.3.2 OWNER3.2.3.3 SCHEMAS3.2.3.4 TABLES 3.2.4 使用范例3.2.4.1 环境准备3.2.4.2 dexp逻辑导出 3.3 dimp逻辑导入3.3.1 使…...

Stable Diffusion绘画 | 图生图-上传重绘蒙版

上传重绘蒙版,可以弥补局部重绘的缺点,能够更精细的修改画面中的指定区域 使用PS制作的蒙版图片为耳朵下方区域,可以为图片中的女生带上不同款式的耳环。 参数配置: 调整提示词: 生成图片如下所示: 调整提…...

打开Office(word、excel、ppt)显示操作系统当前的配置不能运行此应用程序最全解决方案!

我以前用过分区助手把office从c盘挪到d盘了,从那以后office就用不了了,然后我就删了(貌似没删干净)。 最近由于有使用word的需求,所以我从学校官网找到正版软件的安装包,按照步骤重新卸载电脑中office残留…...

猫头虎 分享已解决Bug || TypeError: Cannot read property ‘map‘ of undefined 解决方案

🐯 猫头虎 分享已解决Bug || TypeError: Cannot read property map of undefined 解决方案 摘要: 今天猫头虎带大家深入探讨在前端开发中常见的一个令人头疼的问题:TypeError: Cannot read property map of undefined。这个错误通常出现在我…...

大模型快速部署,以浪潮源2.0为例

step1: 申请PAI-DSW试用 step2:魔塔社区授权 由于本地授权一直失败,于是采用了魔塔免费平台实例进行学习。 搭建好之后,打开就有相关页面了: demo搭建: 按照官方提示的步骤进行搭建,内容如下:…...

Python知识点:使用FastAI进行快速深度学习模型构建

使用FastAI构建深度学习模型非常方便,尤其是对于快速原型开发和实验。以下是一个使用FastAI构建深度学习模型的完整示例,涵盖数据准备、模型训练和评估。 安装依赖 首先,确保你安装了FastAI库和其他必要的库: pip install fast…...

Nginx配置全局https

Nginx配置全局https 要在 Nginx 中配置将 HTTP (80 端口) 请求重定向到 HTTPS (443 端口),可以在 Nginx 的配置文件中添加以下配置。假设你已经配置好了 HTTPS 相关的证书和密钥。 打开你的 Nginx 配置文件,通常是 /etc/nginx/nginx.conf。 在配置文件…...

DBAPI 如何对SQL查询出的日期字段进行统一格式转换

DBAPI 如何对SQL查询出的日期字段进行统一格式转换 mysql有一张订单表,有两个datetime类型的字段create_time update_time 新建一个API,SQL内容是查询所有数据 访问API发现日期字段默认返回时间戳格式 如果修改成自己想要的年月日格式,就要使…...

C:每日一题:字符串左旋

题目:实现一个函数,可以实现字符串的左旋 例如:ABCD左旋一个字符就是BCDA;ABCD左旋两个字符就是CDAB; 1、解题思路: 1.确定目标旋转k个字符,我们要获取字符串的长度 len,目的是根…...

深兰科技荣获2024年度金势奖“AI出海先锋品牌”金奖

近日,由金势奖组委会、凤凰网、营销国际协会等国内外知名机构、集团共同主办的“第四届未来营销大会暨锐品牌盛典”在上海举行。大会揭晓了第四届“金势奖锐品牌大赏”奖项的评选结果,深兰科技凭借自身在机器人产品出口和海外市场开拓等出海全球化发展方…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...