关于mysql日志占用磁盘空间太大问题

本文提供了解决MySQL目录中大量大日志文件占用大量磁盘空间的问题的方法,通过修改配置文件并重启数据库来实现。操作简单有效。
今天有个同事来问我,说mysql目录下有很多1.1G的mysql-bin.00000* 文件,占用了100多G,占用磁盘空间非常大,这些文件都是msyql日志文件,从几m到几个G都有可通,要解决这个问题并不难,只要修改/etc/my.cnf文件里的 #log-bin=mysql-bin  和 #binlog_format=mixed  把这二行注释掉,重启数据库就可以了

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/18762014/viewspace-1712121/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/18762014/viewspace-1712121/

<think>嗯,用户提到MySQL的err文件过大的问题,需要清理或调整日志设置。首先,我得确认err文件是什么,通常MySQL的错误日志文件是记录服务器运行时的错误、警告和其他诊断信息的,比如启动/关闭信息、查询错误等。这个文件如果过大,可能会占用大量磁盘空间,影响系统运行。 接下来,我需要考虑如何处理这个问题。根据之前的引用内容,用户之前可能处理过类似日志文件过大的问题,比如关闭二进制日志(log-bin),但这次是错误日志,不是二进制日志,所以方法不同。用户可能混淆了不同类型的日志,需要明确错误日志和二进制日志的区别。 步骤一:定位错误日志的位置。用户可能不知道错误日志的具体路径,需要指导他们通过MySQL命令或者查看配置文件找到路径。例如,在MySQL中执行`SHOW VARIABLES LIKE 'log_error';`就能找到路径。 步骤二:清理现有的错误日志。直接删除可能不可行,因为MySQL可能正在写入该文件。推荐使用日志轮转(log rotation)的方法,比如使用系统自带的logrotate工具,或者手动重命名并通知MySQL重新打开日志。例如,可以重命名错误日志文件,然后执行`mysqladmin flush-logs`命令,但要注意错误日志是否支持flush,可能不同版本情况不同。如果不行,可能需要重启MySQL服务,但这会影响服务可用性。 步骤三:调整日志设置,避免未来过大。可以修改配置文件,设置日志文件的大小限制,或者调整日志级别,减少不必要的记录。例如,在my.cnf中设置log-error,并启用log-error_verbosity来调整详细程度,或者使用expire_logs_days自动清理旧日志,不过这可能更适用于二进制日志。错误日志可能需要其他机制。 另外,用户可能遇到的问题还包括如何安全地清理日志而不中断服务,是否需要定期维护。可能需要指导用户配置日志轮转策略,比如使用logrotate配置,定期压缩旧日志并删除过期的文件。 还需要注意权限问题,确保操作日志文件的用户有足够的权限,比如MySQL用户或root用户。同时,在修改配置文件后,必须重启MySQL服务才能使设置生效,但用户可能希望避免重启,这时候可能需要确认某些参数是否支持动态调整。 可能的相关问题包括如何监控日志文件大小,如何自动清理,其他类型的日志(如慢查询日志、通用日志)是否也有类似问题,以及如何统一管理这些日志的设置。 总结处理步骤:定位错误日志、清理现有日志(轮转或手动处理)、调整配置限制大小或详细程度、定期维护。同时提供安全操作建议,避免服务中断。</think>### MySQL错误日志文件过大的处理方法 #### 一、定位错误日志文件 1. 通过MySQL命令查找路径: ```sql SHOW VARIABLES LIKE 'log_error'; ``` 输出示例:`/var/log/mysql/mysql-error.log` 2. 通过配置文件确认路径: - 打开`/etc/my.cnf`或`/etc/mysql/my.cnf` - 查找`log-error`配置项,例如: ```ini [mysqld] log-error = /var/log/mysql/mysql-error.log ``` #### 二、清理现有错误日志 1. **安全清理方法**(无需重启服务): ```bash # 重命名当前日志文件(保留历史记录) sudo mv /var/log/mysql/mysql-error.log /var/log/mysql/mysql-error.log.old # 刷新日志(部分MySQL版本支持) mysqladmin -uroot -p flush-logs # 若上述命令无效,需重启服务(谨慎操作) sudo systemctl restart mysql ``` 2. **直接删除**(需暂停服务): ```bash sudo systemctl stop mysql sudo rm /var/log/mysql/mysql-error.log sudo systemctl start mysql ``` #### 三、配置日志轮转(长期优化) 1. 使用`logrotate`工具: - 创建配置文件`/etc/logrotate.d/mysql-error`: ```conf /var/log/mysql/mysql-error.log { daily missingok rotate 7 compress delaycompress notifempty create 640 mysql adm sharedscripts postrotate /usr/bin/mysqladmin flush-logs > /dev/null endscript } ``` #### 四、调整日志详细程度 修改`my.cnf`降低日志级别: ```ini [mysqld] log-error = /var/log/mysql/mysql-error.log log-error-verbosity = 2 # 可选1(仅错误)、2(含警告)、3(含注释) ``` #### 五、监控与维护 ```bash # 查看日志文件大小 du -h /var/log/mysql/mysql-error.log # 实时监控日志增长 tail -f /var/log/mysql/mysql-error.log ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值