mysql 产生大日志文件占用空间!

/ 0

装新版本的mysql 5.5时,遇到了个问题无法安装,提示系统空间不足。于是我就困惑了,10G的硬盘不会因为挂个wordpress就满了吧?!通过df -lh查看了下硬盘的使用情况,顿时我惊呆了,20G的硬盘竟然使用率100%,究竟是什么占用了这么大的空间呢?

使用du -sh /root查看了下各个文件夹的使用,发现有个文件夹竟然占用了8G的大小,不断的深入发现了根源/var/lib/mysql下的N个mysql-bin.*文件,每个文件从几k到几G不等,上网查了下了解到,原来是mysql的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。

因此定位问题:mysql的操作日志过大(2个月)已经8个G了,导致占据硬盘空间,使数据库无法正常使用导致宕机。

问题解决

1、进入mysql:
mysql -u root -p

2、输入清除日志文件命令:reset master;

可能会遇到问题:ERROR 1186 (HY000): Binlog closed, cannot RESET MASTER,原因是已经关闭了日志系统,所以无法清除,具体看下文问题解答。

问题避免

mysql数据文件才几百兆,而日志文件达到十几G,这究竟是有什么作用呢?这主要有两个作用:

(1)数据恢复

如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。

(2)主从服务器之间同步数据

主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。

但是对于我这种小型服务器其实并不需要这样的日志系统,反而会影响我整个系统的运行。所以可以进行取消,方法如下:

1、打开mysql配置文件:vi /etc/my.cnf

2、将log-bin=mysql-bin和binlog_format=mixed 这两条注释掉即可.
#log-bin=mysql-bin
#binlog_format=mixed

问题解答

1、mysql启动错误:mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
修改:vi /etc/my.cnf

[mysqld_safe]

err-log=/var/log/mysqld.log

pid-file=/var/lib/run/mysql/mysqld.pid

改成

[mysqld_safe]

err-log=/var/log/mysqld.log

pid-file=/var/lib/mysql/mysqld.pid

2、重装mysql后,启动失败
在重新安装mysql后需要重新初始化下,设置密码,办法,执行:mysql_secure_installation

3、数据库导入中,提示错误:#1115 – Unknown character set: ‘utf8’
把utf8 替换成 utf8 就可以了

4、数据库导入中,提示错误:#1153 – Got a packet bigger than ‘max_allowed_packet’ bytes
修改:vi /etc/my.cnf将max_allowed_packet值调大即可

5、遇到错误ERROR 1186 (HY000): Binlog closed, cannot RESET MASTER
开启服务器的日志系统,修改:vi /etc/my.cnf取消注释log-bin=mysql-bin和binlog_format=mixed

技术记录

1、centos彻底删除mysql

yum remove mysql mysql-server mysql-libs compat-mysql51

rm -rf /var/lib/mysql

rm /etc/my.cnf

查看是否还有mysql软件:

rpm -qa|grep mysql

有的话继续删除

2、安装mysql
(1)安装MySQL

yum install mysql mysql-server #询问是否要安装,输入Y即可自动安装,直到安装完成
/etc/init.d/mysqld start #启动MySQL
chkconfig mysqld on #设为开机启动
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)
(2)为root账户设置密码:mysql_secure_installation后/etc/init.d/mysqld restart #重启

(3)安装PHP组件,使 PHP5 支持 MySQL

yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt
/etc/init.d/mysqld restart #重启MySql
/etc/init.d/httpd restart #重启Apche