【msyql 】占用硬盘太大 ,那些文件可以清理

从目录内容来看,这台 MySQL 服务器上主要是 xxl-job 调度平台的数据库。占用空间最大的是:

24G xxl_job_log.ibd

这个文件是 xxl-job 的任务执行日志表,随着时间推移,日志量会非常大。

可以清理的文件和方法

1. 清理 xxl_job_log 表数据(重点)

这是你可以安全清理的部分。不要直接删除 .ibd 文件,否则会导致数据库损坏。应通过 SQL 命令清理。

✅ 清理步骤:

登录 MySQL:

mysql -u root -p

切换到对应数据库(假设库名是 job):

USE jobslink_job;

查看日志表总行数:

SELECT COUNT(*) FROM xxl_job_log;

清理 3 个月前的日志(示例):

DELETE FROM xxl_job_log WHERE trigger_time < NOW() - INTERVAL 3 MONTH;

清理后,InnoDB 不会自动释放磁盘空间,需要执行:

OPTIMIZE TABLE xxl_job_log;

⚠️ 注意:OPTIMIZE 会锁表,建议在业务低峰期执行。

知识补充

详细解释一下 OPTIMIZE TABLE xxl_job_log; 的作用、原理和注意事项。

核心作用

OPTIMIZE TABLE 的主要作用是重建表,并回收因数据删除或更新而产生的“碎片空间”,从而减少表的物理存储空间并提高I/O效率。

把它想象成对数据库表进行一次“碎片整理”和“压缩”。

详细解释

1. 回收空间 (主要针对你的场景)
  • 你做了什么:你执行了 DELETE FROM xxl_job_log WHERE ... 语句删除了大量历史数据。

  • 发生了什么:InnoDB 存储引擎在删除数据时,并不会立即将磁盘空间释放回操作系统,而只是将其标记为“可重用”。这意味着,虽然逻辑上数据没了,但物理文件(xxl_job_log.ibd)的大小在操作系统层面并不会缩小。

  • OPTIMIZE TABLE 如何解决:这个命令会重建表(相当于创建一张新表,将旧表的数据复制过去,然后删除旧表,重命名新表)。在这个过程中,所有被标记为“可重用”的空白空间会被舍弃,从而使物理文件变小,并将空间归还给操作系统。这就是解决你24GB文件过大的直接方法。

2. 减少碎片
  • 产生碎片的原因:频繁的 DELETEUPDATEINSERT 操作会导致数据存储变得不连续,产生碎片。

  • 碎片的坏处

    • 空间浪费:如上所述。

    • 性能下降:数据库引擎需要访问更多的随机磁盘块来读取数据,降低了查询效率。

  • OPTIMIZE TABLE 如何解决:通过重建表,使数据行在物理上连续存储,减少碎片,从而提升后续查询的性能。

3. 更新索引统计信息
  • 在重建表的过程中,MySQL 会重新计算索引的统计信息(如基数 Cardinality)。

  • 更准确的统计信息有助于优化器为SQL查询选择更高效的执行计划,从而可能提升查询速度。

非常重要的注意事项(必读!)

  1. 锁表

    • 在执行 OPTIMIZE TABLE 期间,表会被锁住(写锁)。这意味着在操作完成之前,任何对该表的写入操作(INSERT, UPDATE, DELETE)都会被阻塞。读取操作通常可以继续。

    • 后果:会导致你的XXL-JOB调度中心在操作期间无法写入新的日志或更新任务状态,可能影响任务调度。

    • 建议务必在业务低峰期(例如深夜或维护窗口)进行操作

  2. 需要额外磁盘空间

    • 因为操作是新建一个表来替换旧表,所以你需要有至少等于原表大小的空闲磁盘空间。如果你的磁盘空间已经非常紧张,此操作可能会失败。

  3. 耗时

    • 对于一个24GB的大表,这个操作可能会非常耗时(从几分钟到几小时不等,取决于磁盘IO速度)。请做好心理准备,并在操作期间保持连接稳定。

  4. 对于InnoDB引擎

    • 在MySQL 5.6及以上版本,OPTIMIZE TABLE 对于InnoDB表实际上被映射为 ALTER TABLE ... FORCE,其效果等同于 ALTER TABLE ... ENGINE=InnoDB;,也就是重建表。


操作建议

对于你的情况,最标准的操作流程是:

  1. 备份:虽然不是必须,但操作前备份重要数据总是一个好习惯。

  2. 删除数据:在低峰期,先执行 DELETE 语句删除不需要的历史日志。

  3. 优化表:紧接着(或在另一个更低峰的时间)执行 OPTIMIZE TABLE xxl_job_log;

  4. 验证:完成后,使用 du -sh xxl_job_log.ibd 命令检查文件大小,确认空间已被释放。

替代方案
如果无法接受长时间的锁表,可以考虑以下“曲线救国”的方法:

  1. 创建一个和 xxl_job_log 结构一样的新表 xxl_job_log_new

  2. 将需要保留的数据从 xxl_job_log 插入到 xxl_job_log_new

  3. 重命名表,完成切换(这个过程锁表时间极短)。

-- 1. 创建新表
CREATE TABLE xxl_job_log_new LIKE xxl_job_log;-- 2. 插入需要保留的数据 (此步骤耗时,但不会锁住原表,影响读写)
INSERT INTO xxl_job_log_new SELECT * FROM xxl_job_log WHERE ...; -- 这里加上你的时间条件-- 3. 原子性切换表 (快速,锁表时间很短)
RENAME TABLE xxl_job_log TO xxl_job_log_old, xxl_job_log_new TO xxl_job_log;-- 4. 确认新表工作正常后,删除旧表
DROP TABLE xxl_job_log_old;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94185.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

58 C++ 现代C++编程艺术7-模板友元

C 现代C编程艺术7-模板友元 文章目录C 现代C编程艺术7-模板友元一、基础应用场景 &#x1f9e9;1. 模板类声明友元函数2. 普通类声明模板函数为友元二、模板类互访场景 ⚙️1. 同类模板互访&#xff08;一对一&#xff09;2. 异类模板互访&#xff08;多对多&#xff09;三、高…

Undertow —— JBOSS 的社区版,redhat 下场维护的开源项目,顶顶好用的 Java web server

Undertow JBoss Community Undertow Undertow is a flexible performant web server written in java, providing both blocking and non-blocking API’s based on NIO. Undertow 是一个用 Java 编写的灵活高性能 Web 服务器&#xff0c;提供基于 NIO 的阻塞和非阻塞 API。…

【AI智能体】Dify 搭建业务单据差异核对助手实战详解

目录 一、前言 二、Dify介绍 2.1 Dify 是什么 2.2 Dify 核心特性 2.2.1 Dify特点 2.2.2 Dify 多模型支持 2.2.3 Dify 适应场景 2.2.4 基于Dify 搭建发票识别应用优势 三、Dify 搭建业务单据核对助手实战过程 3.1 前置准备 3.1.1 安装必要的插件 3.2 完整操作步骤 3…

Centos编译安装Python3.10

gcc编译源码包 下载python源码包并解压 wget https://www.python.org/ftp/python/3.10.18/Python-3.10.18.tgz tar -xf Python-3.10.18.tgz cd Python-3.10.18系统编译依赖环境安装 sudo yum install zlib-devel ncurses-devel gdbm-devel nss-devel openssl-devel readline-de…

Maya 3D建模 导入参考图、锁定参考图

1 导入参考图切换到 前视图 或者 侧视图 导入 &#xff08;根据参考图片类别去选择&#xff09;方法1&#xff1a;视图--图像平面--导入图像方法2&#xff1a;直接点 图像平面 备注&#xff1a;误操作导致看不到 解决办法&#xff1a;显示--视口 找对应的2 锁定参考图目的&…

基于单片机智能加湿器/空气加湿器

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 基于单片机的智能加湿器通过集成温湿度传感器、控制模块和雾化装置&#xff0c;实现环境湿度的自…

SNDR:高精度ADC系统的综合性能标尺

SNDR&#xff1a;高精度ADC系统的综合性能标尺 一、SNDR的本质定义与理论基础 信噪失真比(Signal-to-Noise-and-Distortion Ratio) 是评估ADC系统综合性能的核心指标&#xff0c;定义为信号功率与噪声及失真功率之和的比值&#xff1a; SNDRdB10log⁡10(PsignalPnoisePdistorti…

2025年渗透测试面试题总结-31(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 一、代码审计核心思路&#xff08;261&#xff09; 二、MySQL Getshell前提&#xff08;262&#xff09; …

[创业之路-560]:机械、电气、自控、电子、软件、信息、通信、大数据、人工智能,上述技术演进过程

上述关键词反映的技术演进过程可梳理为一条从机械执行到智能决策的递进式发展主线&#xff0c;各技术领域在不同阶段相互渗透、共同推动机器人技术从功能替代向认知革命跃迁。以下是具体演进逻辑与趋势分析&#xff1a;一、技术演进的三阶段递进机械主导阶段&#xff08;工业革…

芋道前端项目部署后刷新 404 的解决办法(Nginx 配置教程)

很多同学在把 芋道前端项目 部署到服务器后&#xff0c;会遇到一个奇怪的问题&#xff1a; &#x1f449; 项目首页能正常访问&#xff0c;但一旦在浏览器里手动刷新某个页面&#xff0c;就会报 404 Not Found 错误。 这到底是为什么呢&#xff1f;又该怎么解决呢&#xff1f;下…

更适合后端宝宝的前端三件套之HTML

文章目录&#x1f4d5;1. HTML基础✏️1.1 什么是HTML✏️1.2 认识HTML标签✏️1.3 HTML文件基本结构✏️1.4 标签层次结构&#x1f4d5;2. HTML常见标签✏️2.1 标题标签✏️2.2 段落标签✏️2.3 换行标签✏️2.4 图片标签✏️2.5 超链接标签✏️2.6 表格标签&#x1f4d5;3. …

【JVM内存结构系列】四、不同垃圾回收器与堆内存的适配关系:从分代GC到Region GC

在JVM内存体系中&#xff0c;堆内存的“分代结构”与“对象流转规则”是通用基础&#xff0c;但垃圾回收器&#xff08;GC&#xff09;是决定堆内存实际表现的核心变量——不同GC为实现“低延迟”“高吞吐量”等目标&#xff0c;会对堆的划分方式、对象管理逻辑、参数配置规则进…

Zemax光学设计输出3D

输出立体数据文件&#xff08;IGES/STEP/SAT/STL 格式&#xff09;的参数设置界面&#xff0c;各参数含义如下&#xff1a;1. 起始面/终止面&#xff1a;设定要输出立体数据对应的光学表面范围&#xff0c;从第 0 个表面到第 9 个表面 &#xff0c;限定参与输出的光学结构表面区…

模块测试与低功耗模式全攻略

一、模块测试流程在测试一个模块时&#xff0c;建议遵循以下步骤&#xff1a;基本测试&#xff1a;测试该模块的寄存器读写功能是否正常。可以向每个寄存器写入 0x5A5A 和 0xA5A5&#xff0c;这两种模式可以覆盖对寄存器写入 0 和 1 的情况。进阶测试&#xff1a;在基本测试通过…

机器学习实验三、使用决策树算法预测泰坦尼克号幸存者

实验目的1. 掌握特征工程&#xff0c;会进行特征提取与特征选择&#xff0c;会进行缺失值填充。2. 建立决策树模型&#xff0c;解决实际问题。3. 会对模型进行调试&#xff0c;能够绘制并保存决策树。实验环境Python 3.7.0&#xff0c;Sklearn &#xff0c;PyCharm实验原理1、特…

从全栈开发到微服务架构:一次真实的Java面试实录

从全栈开发到微服务架构&#xff1a;一次真实的Java面试实录 面试官与应聘者介绍 面试官&#xff1a;李明&#xff0c;某互联网大厂技术负责人&#xff0c;擅长Java后端、微服务及云原生架构。 应聘者&#xff1a;张伟&#xff0c;28岁&#xff0c;硕士学历&#xff0c;拥有5年…

新的 Gmail 网络钓鱼攻击利用 AI 提示注入来逃避检测

网络钓鱼一直以来都是为了欺骗人们。但在这次活动中&#xff0c;攻击者不仅瞄准用户&#xff0c;还试图操纵基于人工智能的防御系统。 这是我上周记录的Gmail 网络钓鱼链的演变。那次攻击活动依赖于紧迫性和重定向&#xff0c;但这次引入了隐藏的 AI 提示&#xff0c;旨在混淆…

Restful风格设计

文章目录什么是Restful风格&#xff1f;RESTful API设计最佳实践1. URL设计原则2. HTTP状态码的正确使用3. 统一的响应格式实际案例&#xff1a;用户管理系统API总结什么是Restful风格&#xff1f; 我的理解是&#xff1a;Restful是一种基于HTTP协议的架构设计风格&#xff0c…

深入 Glide 图像变换:自定义效果、GIF处理与组合变换

在 Android 开发中&#xff0c;Glide 的强大不仅在于其高效的加载和缓存能力&#xff0c;更在于其无与伦比的可扩展性&#xff0c;尤其是在图像处理层面。当内置的 fitCenter() 和 circleCrop() 无法满足你的设计需求时&#xff0c;自定义 Transformation 便是你的终极武器。本…

数据挖掘 4.8 评估泛化能力

4.8 Estimating Generalization 4.8 评估泛化能力 评估模型的泛化能力如何合理评估模型的泛化能力指导原则 (Guidelines)存在的问题 (Issues)K-fold 交叉验证&#xff08;Cross-Validation)留一交叉验证&#xff08;Leave One Out CV&#xff09;(LOOCV)Stratification 分层训练…