MySQL server在中午的時候忽然掛掉。重啟mysql也盡是失敗,只有重啟電腦才能解決,然而重裝了MySQL也是不行,晚上還是掛,
去看mysql的errorlog,只能看到類似如下的信息:
Forcing close of thread xxxxx user: 'root'
百度之后
發現這算屬MySQL的一個bug,不管連接是通過hosts還是ip的方式,MySQL都會對DNS做反查,IP到DNS,由於反查的接續速度過慢(不管是不是isp提供的dns服務器的問題或者其他原因),大量的查詢就難以應付,線程不夠用就使勁增加線程,但是卻得不到釋放,所以MySQL會“ 假死”。
解決的方案很簡單,結束這個反查的過程,禁止任何解析。
1、打開mysql的配置文件(my.cnf),在[mysqld]下面增加一行:
skip-name-resolve
2、在my.ini添加的內容:
skip-locking
skip-name-resolve
任務管理器重啟MySQL服務即可
不知道為什么,我這里加入這個:skip-locking參數之后不能啟動服務,只加一個跳過解析是可以啟動的,待解決