記一次服務停止後-mysql服務啓動失敗;

服務器: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 顯示建立相關鏈接的程序名

發佈了22 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章