CMS后台日志清理,减少数据库占用空间

网站后台日志表越积越多,数据库体积从几百 MB 涨到几个 GB,备份慢、恢复难,甚至影响前台打开速度。
这篇文章面向零基础站长,讲清楚如何定位 CMS 里的日志表,通过后台、phpMyAdmin 或命令行安全清理,把数据库占用空间降下来,并验证清理效果。

先确认哪些表在占空间

不同 CMS 的日志表名不一样,但常见的有 logsadmin_loguser_loglogin_logoperation_logaccess_log 等。
清理前别急着删,先查清楚每张表占多大。

如果你用的是宝塔面板,路径是:数据库 → 点击对应数据库右侧的 管理 → 进入 phpMyAdmin → 点击左侧数据库名 → 看右侧表列表的 大小 列。
也可以执行下面这条 SQL,按大小排序列出所有表:

SELECT table_name AS '表名',
       ROUND((data_length + index_length) / 1024 / 1024, 2) AS '大小(MB)'
FROM information_schema.tables
WHERE table_schema = '你的数据库名'
ORDER BY (data_length + index_length) DESC;

结果里排在前面的表就是清理重点。
通常日志表、缓存表、统计表最容易膨胀。先记录清理前的数据库总大小和表行数,后面验证时要用。

三种清理方式,按环境选一种

方式一:CMS 后台自带清理功能

很多 CMS 在后台设置了日志管理入口,这是最安全的方式。
常见路径:

  • 系统系统日志清空日志
  • 工具日志管理 → 勾选全部 → 删除
  • 设置清理缓存 → 同时勾选 清空日志表

操作前建议先备份数据库。
点击清空后,系统一般会提示“清理成功”或跳转回列表页。
如果后台没有这个按钮,说明该 CMS 不支持一键清理,需要手动处理。

方式二:phpMyAdmin 手动删除

进入 phpMyAdmin,找到确认好的日志表,执行:

TRUNCATE TABLE `admin_log`;

TRUNCATE 会一次性清空整张表并重置自增 ID,
DELETE FROM admin_log; 更快,
产生的碎片也更少。注意:
TRUNCATE 不可回滚,
执行前务必备份该表。

如果只想保留最近 30 天日志,用 DELETE 加时间条件:

DELETE FROM `admin_log` WHERE `create_time` < DATE_SUB(NOW(), INTERVAL 30 DAY);

时间字段名各 CMS 不同,常见的是 create_timeadd_timelog_timecreatetime,先看表结构再改。

方式三:命令行批量清理

服务器上操作更快。
先登录 MySQL:

mysql -u root -p

进入对应数据库:

USE 你的数据库名;
SHOW TABLES LIKE '%log%';

根据结果逐张清理:

TRUNCATE TABLE admin_log;
TRUNCATE TABLE login_log;
TRUNCATE TABLE operation_log;

退出后,如果表很多,可以写一条 shell 循环,但新手不建议直接批量脚本删除,容易误伤业务表,手动确认表名更稳妥。

清理后别忘了优化表空间

DELETE 删除数据后,InnoDB 表文件不会立刻变小,需要执行 OPTIMIZE TABLE 回收空间。
在 phpMyAdmin 或命令行执行:

OPTIMIZE TABLE admin_log;
OPTIMIZE TABLE login_log;

执行时表会被短暂锁定,流量高峰期不建议操作。
如果数据库很大,OPTIMIZE 可能耗时较长,建议在访问量低的时段进行。

避坑与效果验证

避坑一:别把业务表当日志表删。ordersusersarticles 这类表包含核心数据,清空前一定看表名和表注释。

避坑二:没有备份就 TRUNCATE。 一旦执行无法撤销,至少先导出该表 SQL 文件。

避坑三:清理后不优化,空间没释放。 只 DELETE 不 OPTIMIZE,数据库文件大小可能不变。

避坑四:日志表有外键关联。 某些 CMS 的日志表被其他表引用,TRUNCATE 会报错,此时改用 DELETE 并加时间条件。

验证效果:回到宝塔面板数据库列表,或执行 du -sh /www/server/data/数据库名,对比清理前后大小。
如果空间明显下降,说明清理生效。
也可以在 phpMyAdmin 中刷新表列表,确认日志表行数变为 0 或只剩近期数据。

常见疑问

清理日志会影响网站正常访问吗? 只要删除的是日志、缓存、统计类表,不影响文章、用户、订单等业务数据,前台访问正常。

多久清理一次合适? 日志量大的站点建议每月检查一次,或设置后台自动清理任务,保留 30 至 90 天日志即可。

TRUNCATE 和 DELETE 有什么区别? TRUNCATE 清空整表、速度快、不可回滚;
DELETE 可加条件、可回滚,但慢且产生碎片。
按需选择即可。

清理后数据库还是很大怎么办? 检查是否有其他大表,比如缓存表、统计表、回收站表,逐一排查。
必要时用 OPTIMIZE TABLE 逐张回收。

清理日志只是减少数据库占用空间的第一步。
养成定期检查表大小的习惯,配合自动清理策略,才能让数据库长期保持轻量,备份和迁移也会更省心。

分享到:
上一篇
CMS程序定时清理缓存,自动释放服务器内存
下一篇
CMS对接对象存储OSS,图片视频云端存放
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意