mysql too many connections問題解決(親測有效)

———— 1 start

1. 錯誤 too many connections 如下在這裏插入圖片描述

(1)首先我們知道出現這種情況使用 mysql -u root -p 的方式進行登錄連接數據庫是不行的

2.因此我們先使用如下方式裏連接上數據庫

(1)首先初始化mysql,發現/var/lib/mysql /這個目標路徑已經存在/var/lib/mysql/,導致無法初始化。
(2)解決步驟如下
首先進入local目錄下,使用 cd /usr/local

然後刪除 /var/lib/mysql 文件夾, 使用 rm -rf /var/lib/mysql

最後重啓數據庫mysql ,使用 service mysqld restart
在這裏插入圖片描述
這裏需要注意的是,用戶的登錄密碼也會初始化,這裏如果初始化密碼不記得了可以直接
重新設置密碼,重置密碼不懂的,可以看我的另一篇博客

傳送門-> 騰訊雲服務器重置mysql密碼-親測有效

3. 之後就可以使用 mysql -u root -p 登錄連接mysql了

————1 end

### 接下來就直接使用set 一頓操作

————2 start

4.設置mysql的連接屬性值

1、mysql -u root -p 回車輸入密碼進入mysql

2、show processlist;

查看連接數,可以發現有很多連接處於sleep狀態,這些其實是暫時沒有用的,所以可以kill掉

3、show variables like "max_connections";

查看最大連接數,應該是與上面查詢到的連接數相同,纔會出現too many connections的情況

4、set GLOBAL max_connections=1000;

修改最大連接數,但是這不是一勞永逸的方法,應該要讓它自動殺死那些sleep的進程。

5、show global variables like 'wait_timeout';

這個數值指的是mysql在關閉一個非交互的連接之前要等待的秒數,默認是28800s

6、set global wait_timeout=300;

修改這個數值,這裏可以隨意,最好控制在幾分鐘內

7、set global interactive_timeout=500;

修改這個數值,表示mysql在關閉一個連接之前要等待的秒數,至此可以讓mysql自動關閉那些沒用的連接,但要注意的是,正在使用的連接到了時間也會被關閉,因此這個時間值要合適

批量kill之前沒用的sleep連接,在網上搜索的方法對我都不奏效,因此只好使用最笨的辦法,一個一個kill

8、select concat('KILL ',id,';') from information_schema.processlist where user='root'; 先把要kill的連接id都查詢出來

(1)複製中間的kill id;內容到word文檔

(2)替換掉符號“|”和回車符(在word中查詢^p即可查詢到回車符)

(3)把修改過的內容複製回終端,最後按回車執行

9、KILL 數字;直接就可以將相關的mysql連接刪除殺死

————2 end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章