装新版本的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