You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu服务器中MySQL数据库占用空间异常过大问题求助

解决MySQL的/var/lib/mysql目录占用空间过大问题

首先执行以下命令定位目录内占用空间的文件/文件夹:

du -sh /var/lib/mysql/*

1. 二进制日志(binlog)占用过多

这是最常见的原因,binlog用于数据恢复和主从同步,若未配置自动清理会持续膨胀。

  • 查看当前binlog文件及正在使用的日志:
ls -lh /var/lib/mysql | grep -i bin
mysql -e "SHOW MASTER STATUS;"
  • 清理过期日志:
    • 按时间清理(保留7天内的日志):
PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);
  • 按指定文件清理(仅清理到指定日志之前的文件):
PURGE BINARY LOGS TO 'mysql-bin.000123';
  • 配置自动清理避免再次膨胀:
    编辑/etc/my.cnf或/etc/mysql/my.cnf,添加:
# 保留7天的binlog,用秒数配置则写 binlog_expire_logs_seconds = 604800
expire_logs_days = 7

重启MySQL生效:

systemctl restart mysql

2. InnoDB共享表空间(ibdata1)膨胀

ibdata1是InnoDB的共享表空间,默认会自动增长且不会主动收缩,即使删除数据也不会释放空间。

  1. 全量备份所有数据库:
mysqldump -u root -p --all-databases > all_dbs_backup.sql
  1. 停止MySQL服务:
systemctl stop mysql
  1. 删除共享表空间和日志文件:
rm /var/lib/mysql/ibdata1 /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile1
  1. 配置独立表空间(避免后续膨胀):
    编辑my.cnf,添加或确保以下配置:
innodb_file_per_table = 1
  1. 启动MySQL并恢复备份:
systemctl start mysql
mysql -u root -p < all_dbs_backup.sql

3. 慢查询/错误日志文件过大

  • 查看日志文件大小:
ls -lh /var/lib/mysql/*slow.log /var/lib/mysql/*.err
  • 安全截断日志(避免删除文件导致MySQL写入失败):
truncate -s 0 /var/lib/mysql/mysql-slow.log
truncate -s 0 /var/lib/mysql/mysqld.err
  • 配置日志轮转自动管理:
    创建/etc/logrotate.d/mysql文件,写入:
/var/lib/mysql/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 640 mysql mysql
    sharedscripts
    postrotate
        systemctl reload mysql > /dev/null 2>&1
    endscript
}

4. 临时文件残留

MySQL异常退出可能残留临时表或临时文件,检查并清理(操作前建议停止MySQL):

find /var/lib/mysql -name "#*" -o -name "*tmp" | xargs rm -f

5. 备份文件或其他残留文件

检查目录内是否有备份SQL、压缩包等无用文件:

ls -lh /var/lib/mysql | grep -E "(sql|tar|gz|zip)"

确认无用后直接删除:

rm /var/lib/mysql/xxx_backup.sql

内容的提问来源于stack exchange,提问作者Sonjay Sarker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:37:42