某次在linux服务器上重启mysql数据库发现各种报错,导致mysql数据库无法正常使用。
无论stop、start操作或是mysql连接都出现了不同的报错提示,具体报错为:
# service mysqld stop
ERROR! MySQL server PID file could not be found!
# service mysqld start
Starting MySQL.. ERROR! The server quit without updating PID file (/data/mysql/mysql.pid).
# mysql -uroot -p
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
一、报错原因:
其实以上的三种不同mysql报错都源于一个原因,那就是根目录磁盘满了。
二、排查导致磁盘满的大文件:
1、首先使用df命令查看磁盘占用情况:
# df
也许在输出中你会看到:
/dev/mapper/VolGroup-lv_root 39841176 37788792 28552 100% /
2、使用 # du -sh * 查看大文件,例如根目录为data,使用命令查看:
# cd /data
# du -sh *
会发现显示mysql文件夹占用n多G,再查看具体哪些文件:
# cd mysql
# du -sh *
发现很多大文件,例如:
581M mysql-bin.000029
28K mysql-bin.000030
7.6G mysql-bin.000031
4.0K mysql-bin.000032
这些文件是MySQL Binary Log二进制文件,主要用于数据恢复和主从服务器的主从复制。
而鉴于我并没有主从服务器,所以我决定删掉他们。
三、解决方法:
1、删除掉这些大文件:
# rm -rf mysql-bin.000031
~~~
2、删除掉他们之后,在/etc/ 下面打开my.cnf,找到
log-bin=mysql-bin
binlog_format=mixed
把这两行注释掉,即在前面加上“ # ”号:
#log-bin=mysql-bin
#binlog_format=mixed
3、重新启动mysql服务器,就OK了。
service mysqld restart