[MySQL] ERROR 2002(HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.

4293 ワード

1故障説明
テスト環境Cactiページの登録に失敗して、saは私を探して問題を調べて、saは私を探してDBの故障かどうかを見ます
 
2 dbサーバcheckに行きます.
[root@xxxx mysqldata]# ps-eaf|grep mysql
root     1422 12582  0 03:48 pts/13   00:00:00 grep mysql
root     1961     1  0 Sep02 ?        00:00:03/bin/sh/usr/bin/mysqld_safe--datadir=/opt/mysqldata --socket=/var/lib/mysql/mysql.sock--pid-file=/opt/mysqldata/mysqld.pid --basedir=/usr --user=mysql
mysql   15117  1961  3 03:44 ?        00:00:08/usr/libexec/mysqld--basedir=/usr --datadir=/opt/mysqldata --user=mysql--log-error=/opt/mysqldata/mysqld.log --pid-file=/opt/mysqldata/mysqld.pid--socket=/var/lib/mysql/mysql.sock
root    31480  6972  0 Sep17 pts/8    00:00:00 mysql -uroot -px xxxxxxx
[root@xxxx  mysqldata]#
OK、mysqlプロセスはすべて正常で、バックグラウンドで運行していて、killに落ちていません.
 
3 rootでcheckの中のmysqlスレッドにログインする
[root@xxxx mysqldata]# mysql-uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to localMySQL server through socket '/var/lib/mysql/mysql.sock' (111)
[root@eanltrsutl001 mysqldata]#
 
4 mysqlのerrorログを表示する
2の手順ですでに見られた--log-error=/opt/mysqldata/mysqld.logパラメータなのでerrorログファイル/opt/mysqldata/mysqldを開きます.log
[root@xxxx mysqldata]# tail –f/opt/mysqldata/mysqld.log
130930 3:39:50  InnoDB: Started; logsequence number 3 3403486393
130930 3:39:50 [ERROR]/usr/libexec/mysqld: Error writing file'/opt/mysqldata/mysqld.pid' (Errcode: 28)
130930 3:39:50 [ERROR] Can't start server: can't create PID file: No space lefton device
130930 03:39:50 mysqld_safe Number ofprocesses running now: 0
130930 03:39:50 mysqld_safe mysqldrestarted
130930 3:39:50  InnoDB: Initializingbuffer pool, size = 15.0G
130930 3:39:51  InnoDB: Completedinitialization of buffer pool
InnoDB: The log sequence number in ibdatafiles does not match
InnoDB: the log sequence number in theib_logfiles!
130930 3:39:51  InnoDB: Database was notshut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information fromthe .ibd files...
InnoDB: Restoring possible half-writtendata pages from the doublewrite
InnoDB: buffer...
130930 3:39:51  InnoDB: Started; logsequence number 3 3403486393
130930  3:39:51 [ERROR]/usr/libexec/mysqld: Errorwriting file '/opt/mysqldata/mysqld.pid' (Errcode: 28)
130930  3:39:51 [ERROR] Can't start server: can'tcreate PID file: No space left on device
130930 03:39:51 mysqld_safe Number ofprocesses running now: 0
130930 03:39:51 mysqld_safe mysqldrestarted
130930 3:39:51  InnoDB: Initializingbuffer pool, size = 15.0G
あるかどうか見ましたが、No space left ondeviceは、ディスクがいっぱいでwroteができないに違いありません.
 
5ディスク領域をチェックする
[root@xxxx mysqldata]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/Sys-root 1008M  513M 445M  54%/
tmpfs                  15G    0   15G   0%/dev/shm
/dev/mapper/Sys-applog
                       50G   14G  34G  29%/applog
/dev/vda1             194M   33M 152M  18%/boot
/dev/mapper/Sys-home  2.0G  68M  1.9G   4%/home
/dev/mapper/Sys-opt    20G  19G     0  100%/opt
/dev/mapper/Sys-tmp   7.9G 3.4G  4.2G  45%/tmp
/dev/mapper/Sys-usr   2.0G 1.9G   41M  98%/usr
/dev/mapper/Sys-var   7.9G 4.4G  3.2G  58%/var
/dev/mapper/Sys-crash
                      2.0G   68M 1.9G   4%/var/crash
/dev/mapper/Sys-log   7.9G 1.3G  6.3G  17%/var/log
/dev/mapper/Sys-vtmp 1008M   34M 924M   4%/var/tmp
//10.15.41.252/share  466G  23G  444G   5%/applog/winshare
やはりディスクがいっぱい、/optディレクトリが100%になったので、急いでsaにディスクスペースのクリーンアップを通知し、saはディスクを40 Gに拡張しました.
 
6 rootログインcheck mysql db状態
[root@xxxx mysqldata]# mysql-uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user'root'@'localhost' (using password: NO)
[root@xxxx mysqldata]#

PS:OK、はい、ディスクがいっぱいになったら、ディスクのスペースを大きくすれば、mysqlは自動的に各種clients接続操作を回復します.
 
 
7善後
このサーバーはテストサーバーのcactiモニタリングアプリケーションdbサーバーなので、dbのインストールが完了したら、saにディスクモニタリングを追加するように注意しますが、dev部門は大丈夫だと言っていますが、saは忙しくて他のことでディスクモニタリングを追加する時間がありません.
ディスクモニタリングを追加するにはsaにタイムリーに注意しなければならないようですが、devの経験も100%頼りにならないわけではありません.