最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在CentOS上運行MySQL報錯Too many connections(連接數(shù)打滿)的解決方案

 更新時間:2026年03月04日 09:25:01   作者:墨著染霜華  
在CentOS服務器上運維MySQL時,經(jīng)常會遇到 Too many connections 報錯,尤其是通過 mysqld_safe 腳本啟動、而非系統(tǒng) systemctl 管理的MySQL實例,本文結合實際運維場景,詳細講解該報錯的原因、應急解決步驟、永久優(yōu)化方案,需要的朋友可以參考下

在CentOS服務器上運維MySQL時,經(jīng)常會遇到 Too many connections 報錯,尤其是通過 mysqld_safe 腳本啟動、而非系統(tǒng) systemctl 管理的MySQL實例(如本文實戰(zhàn)場景),報錯后常規(guī)關閉、重啟命令會失效,甚至讓人誤以為MySQL服務異常。本文結合實際運維場景,詳細講解該報錯的原因、應急解決步驟、永久優(yōu)化方案,全程可直接復制命令執(zhí)行,新手也能快速上手。

一、問題場景復現(xiàn)(真實實戰(zhàn)案例)

服務器環(huán)境:CentOS 7,MySQL通過 /usr/local/mysql/bin/mysqld_safe 腳本啟動(非系統(tǒng)默認 mysqld/mariadb 服務),正常運行一段時間后,執(zhí)行關閉命令時報錯:

[root@VM-0-16-centos ~]# /usr/local/mysql/bin/mysqladmin -uroot -p -S /tmp/mysql.sock shutdown
Enter password: 
mysqladmin: connect to server at 'localhost' failed
error: 'Too many connections'

同時,用 systemctl status mysqld查看服務狀態(tài),顯示 inactive (dead),但通過ps aux | grep mysql 能看到MySQL進程正常運行——核心原因是:MySQL連接數(shù)打滿,導致無法建立新的管理連接,且MySQL未通過系統(tǒng)服務管理,常規(guī)命令失效。

二、核心原因分析

1. 直接原因:MySQL默認連接數(shù)(max_connections)默認值較低(通常為151),當客戶端連接數(shù)超過該閾值,就會拒絕新連接,報 Too many connections;

2. 間接原因:本次場景中,MySQL通過 mysqld_safe 腳本啟動,而非系統(tǒng) systemd服務,導致 systemctl 無法識別和管理MySQL進程,常規(guī)的 systemctl restart mysqld 無效;

3. 潛在原因:未配置閑置連接超時,導致大量閑置連接占用連接數(shù),長期積累后打滿閾值。

三、分步解決方案(應急+永久,全程實戰(zhàn))

核心思路:先安全停止打滿連接的MySQL進程 → 臨時調(diào)高連接數(shù)重啟 → 修改配置文件永久優(yōu)化,全程保證數(shù)據(jù)不丟失。

第一步:應急處理——安全停止MySQL進程(解決連接數(shù)打滿)

由于連接數(shù)打滿,mysqladmin 無法登錄執(zhí)行關閉命令,此時需通過 kill 命令發(fā)送正常關閉信號,確保MySQL先處理完現(xiàn)有連接、刷盤后再退出(避免數(shù)據(jù)丟失),步驟如下:

  1. 查找MySQL主進程PID(關鍵,對應 mysqld 進程,而非 mysqld_safe): # 自動查找MySQL主進程PID,無需手動輸入 MYSQL_PID=$(ps aux | grep '/usr/local/mysql/bin/mysqld' | grep -v grep | awk '{print $2}') # 查看找到的PID(確認是否正確) echo $MYSQL_PID說明:執(zhí)行后會輸出一串數(shù)字(如本文案例中的 26693),即為MySQL主進程PID。
  2. 發(fā)送正常關閉信號(最安全,優(yōu)先使用):kill -TERM $MYSQL_PID說明:kill -TERM 是正常關閉信號,MySQL會收到信號后,停止接收新連接、處理完現(xiàn)有連接、將內(nèi)存中的數(shù)據(jù)刷到磁盤,然后安全退出,不會丟失數(shù)據(jù)。
  3. 確認進程已停止:# 等待5秒,讓MySQL完成刷盤和退出 sleep 5 # 查看MySQL進程,確認是否停止 ps aux | grep mysql若輸出結果中,只有 grep --color=auto mysql 這一行,說明MySQL已成功停止;若仍有 mysqld 進程,執(zhí)行應急強制關閉(僅兜底使用,盡量少用): kill -9 $MYSQL_PID注意:kill -9 會強制終止進程,可能導致未刷盤的數(shù)據(jù)丟失,僅在 kill -TERM 無效時使用。

第二步:重啟MySQL(臨時調(diào)高連接數(shù),恢復服務)

重啟時,需沿用原有的 mysqld_safe 啟動參數(shù),同時臨時調(diào)高連接數(shù),避免重啟后再次快速打滿,命令如下:

# 后臺重啟MySQL,保持原有datadir和pid-file參數(shù),臨時調(diào)高連接數(shù)到1000
nohup /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid --max_connections=1000 

參數(shù)說明:

  • --datadir=/data/mysql/data:MySQL數(shù)據(jù)存儲目錄(需和你服務器上的實際路徑一致,可通過 ps aux | grep mysql 查看);
  • --pid-file=/data/mysql/data/mysql.pid:MySQL進程PID文件路徑(同上,保持和原有啟動參數(shù)一致);
  • --max_connections=1000:臨時將最大連接數(shù)調(diào)到1000(可根據(jù)服務器配置調(diào)整,如2核4G服務器建議1000-2000);
  • nohup ... &:后臺啟動,避免關閉終端后MySQL進程退出。

重啟后驗證是否成功:

# 1. 查看MySQL進程是否正常啟動(應有mysqld_safe和mysqld兩個進程)
ps aux | grep mysql

# 2. 登錄MySQL驗證(使用實際的socket文件和端口)
/usr/local/mysql/bin/mysql -uroot -p -S /tmp/mysql.sock -P 5757

若能正常登錄MySQL,說明重啟成功,服務已恢復正常。

第三步:永久優(yōu)化——修改配置文件,徹底解決連接數(shù)打滿

第二步中臨時調(diào)高的 max_connections,會在MySQL重啟后失效,需修改MySQL配置文件,永久生效,同時配置閑置連接超時,自動釋放無用連接。

  1. 查找MySQL配置文件(MySQL配置文件通常名為 my.cnfmy.ini,常見路徑如下): # 全局查找配置文件,挨個驗證 find /etc /usr/local/mysql/ -name my.cnf -o -name my.ini常見結果:/etc/my.cnf/usr/local/mysql/my.cnf,找到后記錄路徑(本文以 /etc/my.cnf 為例)。
  2. 編輯配置文件(使用vi編輯器,新手可直接復制命令): vi /etc/my.cnf進入編輯模式后,找到 [mysqld] 段落(若沒有,在文件頂部添加),添加/修改以下兩行:[mysqld] # 永久設置最大連接數(shù)(根據(jù)服務器配置調(diào)整,2核4G建議1000-2000,8核16G建議2000-3000) max_connections = 1000 # 閑置連接超時時間(單位:秒),600秒=10分鐘,超時后自動釋放連接 wait_timeout = 600編輯完成后,按 Esc 鍵,輸入 :wq 保存并退出。
  3. 重啟MySQL,使配置生效(重復第一步和第二步的重啟命令): # 1. 停止MySQL(同第一步) MYSQL_PID=$(ps aux | grep '/usr/local/mysql/bin/mysqld' | grep -v grep | awk '{print $2}') kill -TERM $MYSQL_PID sleep 5 # 2. 重啟MySQL(無需再加--max_connections,配置文件已生效) nohup /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid &
  4. 驗證配置是否生效: # 登錄MySQL /usr/local/mysql/bin/mysql -uroot -p -S /tmp/mysql.sock -P 5757 # 查看當前最大連接數(shù)和閑置超時時間 show variables like 'max_connections'; show variables like 'wait_timeout';若輸出結果中,max_connections 為1000、wait_timeout 為600,說明配置已永久生效。

四、補充說明(避坑關鍵)

1. 關于MySQL服務管理方式的補充

本文場景中,MySQL通過 mysqld_safe 啟動,導致 systemctl status mysqld 顯示 dead,這是正?,F(xiàn)象——systemctl只能管理通過系統(tǒng)服務注冊的進程,而 mysqld_safe 是手動啟動的腳本,不屬于系統(tǒng)服務。

若想后續(xù)用 systemctl 方便管理(如 systemctl restart mysql),可手動創(chuàng)建 systemd 服務文件,具體步驟可參考文末拓展。

2. 連接數(shù)調(diào)整建議(避免過度調(diào)高)

max_connections 并非越高越好,需根據(jù)服務器配置調(diào)整:

  • 2核4G服務器:建議1000-2000;
  • 4核8G服務器:建議2000-3000;
  • 8核16G及以上:建議3000-5000;
  • 若服務器內(nèi)存較?。ㄈ?核2G),建議500-1000,避免連接數(shù)過高導致內(nèi)存耗盡。

3. 常見報錯排查

(1)重啟后無法登錄MySQL:檢查 datadirpid-file 路徑是否正確,確保和啟動參數(shù)一致;

(2)kill 進程后仍無法重啟:檢查是否有殘留進程,執(zhí)行 ps aux | grep mysql 找到殘留PID,用 kill -9 強制終止后再重啟;

(3)配置文件修改后不生效:確認配置文件路徑正確,且修改后重啟了MySQL,同時檢查 [mysqld] 段落是否正確(配置必須在該段落下才會生效)。

五、拓展:將MySQL注冊為系統(tǒng)服務(可選,方便管理)

若想后續(xù)用 systemctl 管理MySQL(如啟動、停止、開機自啟),可創(chuàng)建 systemd 服務文件,步驟如下:

# 1. 創(chuàng)建服務文件
vi /etc/systemd/system/mysql.service

# 2. 寫入以下內(nèi)容(需修改路徑為你服務器上的實際路徑)
[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid
ExecStop=/usr/local/mysql/bin/mysqladmin -uroot -p密碼 -S /tmp/mysql.sock shutdown
Restart=on-failure

[Install]
WantedBy=multi-user.target

# 3. 重新加載系統(tǒng)服務
systemctl daemon-reload

# 4. 啟動并設置開機自啟
systemctl start mysql
systemctl enable mysql

# 5. 查看服務狀態(tài)
systemctl status mysql

說明:將 ExecStop 中的 密碼 替換為你的MySQL root密碼,后續(xù)即可用 systemctl restart mysql 直接重啟,無需再手動執(zhí)行 mysqld_safe 腳本。

六、總結

MySQL報錯 Too many connections 的核心是連接數(shù)閾值不足,結合本文實戰(zhàn)場景(mysqld_safe 啟動的MySQL),解決流程可總結為:

應急停止(kill -TERM 安全關閉)→ 臨時重啟(調(diào)高連接數(shù))→ 永久優(yōu)化(修改配置文件+閑置超時),全程無需復雜操作,命令可直接復制執(zhí)行。

另外,建議定期查看MySQL連接數(shù)狀態(tài)(show global status like 'Threads_connected';),及時調(diào)整 max_connections 閾值,避免再次出現(xiàn)連接數(shù)打滿的問題。

以上就是在CentOS上運行MySQL報錯Too many connections(連接數(shù)打滿)的解決方案的詳細內(nèi)容,更多關于MySQL報錯Too many connections的資料請關注腳本之家其它相關文章!

相關文章

  • MySQL FIND_IN_SET 函數(shù)實戰(zhàn)實例

    MySQL FIND_IN_SET 函數(shù)實戰(zhàn)實例

    FIND_IN_SET是MySQL處理分隔字符串的函數(shù),用于判斷字符串是否存在于列表中,返回位置或0,適用于標簽、分類等多值場景,但無法使用索引,性能較差,建議結合替代方案或優(yōu)化設計,注意大小寫敏感和空值處理問題,對mysql find_in_set函數(shù)感興趣的朋友一起看看吧
    2025-07-07
  • mysql解決遠程不能訪問的二種方法

    mysql解決遠程不能訪問的二種方法

    mysql解決遠程不能訪問的二種方法,需要的朋友可以參考一下
    2013-04-04
  • 聊聊MySQL的COUNT(*)的性能

    聊聊MySQL的COUNT(*)的性能

    這篇文章主要介紹了聊聊MySQL的COUNT(*)的性能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 了解MySQL之Adaptive Hash Index的使用

    了解MySQL之Adaptive Hash Index的使用

    InnoDB的自適應哈希索引(AHI)是內(nèi)存結構,自動優(yōu)化等值查詢,不支持排序,通過緩存熱點數(shù)據(jù)提升效率,參數(shù)可調(diào)整,適用于特定場景
    2025-08-08
  • Mysql之索引的數(shù)據(jù)結構詳解

    Mysql之索引的數(shù)據(jù)結構詳解

    索引是存儲引擎用于快速找到數(shù)據(jù)記錄的一種數(shù)據(jù)結構,類似于教科書的目錄部分,在MySQL中,索引可以加速數(shù)據(jù)查找,減少磁盤I/O的次數(shù),提高查詢速率,但是,創(chuàng)建和維護索引需要耗費時間,并且索引需要占磁盤空間,在InnoDB中,索引的實現(xiàn)基于B+樹結構
    2024-12-12
  • MySql查詢中按多個字段排序的方法

    MySql查詢中按多個字段排序的方法

    在SQL查詢中,經(jīng)常需要按多個字段對結果進行排序,本文主要介紹了MySql查詢中按多個字段排序的方法,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • MySQL慢查詢診斷與SQL注入防御詳解

    MySQL慢查詢診斷與SQL注入防御詳解

    本文介紹MySQL慢查詢診斷與SQL注入防御的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2026-04-04
  • mysql執(zhí)行sql文件報錯Error: Unknown storage engine‘InnoDB’的解決方法

    mysql執(zhí)行sql文件報錯Error: Unknown storage engine‘InnoDB’的解決方法

    最近在執(zhí)行一個innoDB類型sql文件的時候,發(fā)現(xiàn)系統(tǒng)報錯了,通過查找相關的資料終于解決了,所以下面這篇文章主要給大家介紹了關于mysql執(zhí)行sql文件時報錯Error: Unknown storage engine 'InnoDB'的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • MAC下Mysql5.7.10版本修改root密碼的方法

    MAC下Mysql5.7.10版本修改root密碼的方法

    這篇文章主要介紹了MAC下Mysql5.7.10版本修改root密碼的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • MySQL的索引系統(tǒng)采用B+樹的原因解析

    MySQL的索引系統(tǒng)采用B+樹的原因解析

    索引是為了加速對表中數(shù)據(jù)行的檢索而創(chuàng)建的一種分散的存儲結構,這篇文章主要介紹了MySQL的索引系統(tǒng)采用B+樹的原因解析,需要的朋友可以參考下
    2021-09-09

最新評論

哈巴河县| 清苑县| 汝阳县| 定襄县| 邵阳县| 望谟县| 兴义市| 夏河县| 双牌县| 涟水县| 柘城县| 奉化市| 肃北| 沅陵县| 寿宁县| 芜湖市| 龙井市| 图们市| 华阴市| 崇州市| 泗阳县| 疏勒县| 长乐市| 铜川市| 汝南县| 玉屏| 临海市| 来宾市| 长治县| 华安县| 龙陵县| 城步| 厦门市| 百色市| 会宁县| 沙洋县| 华坪县| 安平县| 龙井市| 南召县| 巩义市|