服务器:unbuntu16.04,阿里云
起因:运行了快三年的系统突然登陆不进去了,初步查看是由于服务端挂了。
入坑:由于没有服务器密码,只能在阿里云网页端重置服务器密码
第一阶段:此时以为再重启一下服务端可以(之前有过,不过是在开始初期),然而,在查看tomcat启动日志时爆出了不能连接数据库的问题,于是乎,在服务器上登陆mysql ,结果报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
怎么办呢,看看这个啥文件先,然而查到是这个文件不存在。查了一下,通过百度得知
然后试了下面的办法连接
mysql -h 127.0.0.1 -u root -p
还是没有用,还爆了2003错误,最后的最后通过查看msyql启动日志才发现问题!
走了很多弯路,但也学到了点,以下是总结:
1.要多看相关服务的日志,最有效,然后再对症下药
2.要坚信之前运行了这么久都没问题肯定没问题,多看系统层面的东西
3.不能忘记备份,任何有用的
4.解决的时候多思考,从问题本质出发,看报错,看日志/var/log/mysql/error.log
5.不能怕走弯路,还是能学到东西的。但也要高效查问题,抓住问题关键查资料。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
实际问题:是因为重启服务器再启动mysql会重新生成mysql.socket文件,而此时磁盘太满了已经写不下了(也是服务器重启贼慢的原因)。
造成磁盘写满是由于tomcat 的日志太多了。数据处理日志太多,所以后面就关闭了数据接收端的Catalina日志,关闭日志参考
https://blog.csdn.net/hknaruto/article/details/79953725
------------------------------------------------------------------------------------------------------------------------------------------------------------------
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket 解决办法
故障描述:
启动mysql 报错:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
1.先查看mysql启动状态
#/etc/rc.d/init.d/mysqld status
2.mysql.sock位置查找与验证?
# find / -name mysql.sock
/Data/mydata/mysql.sock
验证目录是否正确
#mysql -u root -p -S /Data/mydata/mysql.sock
备注:-S参数socket file文件验证
3.验证mysql.sock文件权限和用户是否正确?
如果是权限问题,则先改变权限
#chown -R mysql:mysql /Data/mydata/mysql.sock
[root@localhost ~]# /etc/init.d/mysqld start
启动 MySQL: [ OK]
4.永久解决:(注:要注意文件夹权限问题,可用chmod 777 file)
修改/etc/my.cnf(不同版本的mysql配置文件可能一样)
添加以下内容到/etc/my.conf:
[client]
socket = /Data/mydata/mysql.sock
[mysqld]
socket = /Data/mydata/mysql.sock
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Linux命令小记:
find / -name aa* 查找根目录下文件名为aa开头的文件
df 查看整体磁盘使用情况
df -lh清楚磁盘使用情况
df -a 是全部的文件系统的使用情况
df -i显示inode信息
df -k 已字节数显示区块占用情况
ls -lh 查看当前文件夹的占用情况
netstat -tunlp |grep 8000 查看端口占用
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名