本篇內(nèi)容主要講解“怎么使用MySQL 5.6參數(shù)extra_port”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么使用MySQL 5.6參數(shù)extra_port”吧!
堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都生料攪拌車小微創(chuàng)業(yè)公司專業(yè)提供成都企業(yè)網(wǎng)站定制營銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺設(shè)計、底層架構(gòu)、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。
一 前言
作為MySQL DBA, 在運維MySQL的工作過程中,常常遇到Too many connections這個錯誤,這時作為數(shù)據(jù)庫維護人員都不能登陸數(shù)據(jù)庫進行維護 是多么窘迫的事??赡苡腥藭f可以修改配置文件,然后重啟數(shù)據(jù)庫來解決。恩,不過這個是很多種解決方法中 可用性最差的一種,本文介紹通過 5.6 新的特性--管理端口 來解決這個問題。
二 認識 extra_port
MySQL 在5.6.14 版本之后引入一個參數(shù)extra_port 用來解決too many connections的問題。
percona 官方介紹:
從官方文檔介紹來看,在MySQL啟動的時候使用該參數(shù)指定一個端口號(不要和正常的數(shù)據(jù)庫服務(wù)端口沖突),Percona Server會監(jiān)聽來自該端口的請求。啟用該參數(shù)可以解決使用thread_pool特性時,由于所有的連接池worker忙于處理慢querey或者被鎖定導(dǎo)致DBA無法通過正常的端口連接DB, 以便DBA可以正常維護數(shù)據(jù)庫。
具體用法如下:
mysql --port='extra-port-number' --protocol=tcp
Maridb 官方介紹 (和percona的介紹類似,讀者朋友可以自己翻譯)
Description: Extra port number to use for tcp-connections in a one-thread-per-connection manner. If set to 0, no other port is used. Introduced for the MariaDB 5.1 threadpool.
extra_max_connections 該參數(shù)主要是控制通過管理端口可以創(chuàng)建多少個連接。
官方介紹:
"This variable can be used to specify the maximum allowed number of connections plus one extra SUPER users connection on the extra_port. This can be used with the extra_port variable to access the server in case no new connections can be established due to all worker threads being busy or being locked when pool-of-threads feature is enabled."
三 extra_port 測試
測試環(huán)境:5.6.26-74.0-log Percona Server
參數(shù)設(shè)置:
max_connections = 1
extra_max_connections = 1
extra_port=13306
通過上面兩個參數(shù),來設(shè)置整個數(shù)據(jù)庫的連接數(shù)。通過上面的參數(shù)配置,最多可以創(chuàng)建4個連接。
測試過程,通過使用下面的命令,嘗試連接數(shù)據(jù)庫:
場景1 模擬業(yè)務(wù)連接數(shù)據(jù)庫,在兩個不同的session下嘗試連接
mysql -uyang -pyang -h227.0.0.1 -P3306
場景2 模擬DBA連接數(shù)據(jù)庫,在兩個不同的session下嘗試連接
mysql -uroot -h227.0.0.1 -P3306
場景3 模擬DBA連接數(shù)據(jù)庫,在兩個不同的session下嘗試連接
mysql -S /srv/my_3306/run/mysql.sock
場景4 占滿數(shù)據(jù)庫的所有連接數(shù),然后使用extra_port 端口以root身份連接
mysql --port=13306 --protocol=tcp -uroot -h227.0.0.1
場景5 占滿數(shù)據(jù)庫的所有連接數(shù),然后使用extra_port 端口以業(yè)務(wù)身份連接
mysql --port=13306 --protocol=tcp -uyang -pyang -h227.0.0.1
場景6 這次不指定通信協(xié)議,嘗試連接
mysql --port=13306 -uyang -pyang -h227.0.0.1
場景7 模擬DBA和業(yè)務(wù)同時連接數(shù)據(jù)庫,在兩個不同的session下嘗試連接
mysql -uyang -pyang -h227.0.0.1 -P3306
mysql -S /srv/my_3306/run/mysql.sock
mysql -uroot -h227.0.0.1 -P3306
測試的結(jié)果
場景1,只能連接1次,第2次報錯 ERROR 1040 (HY000): Too many connections
場景2,只能連接2次,第3次報錯 ERROR 1040 (HY000): Too many connections
場景3,只能連接2次,第3次報錯 ERROR 1040 (HY000): Too many connections
場景4,可以連接2次,第3次報錯 ERROR 1040 (HY000): Too many connections
場景5,無法連接,提示"ERROR 1040 (HY000): Too many connections"
場景6, 在業(yè)務(wù)占用連接池滿,以管理員可以連接2次,
場景7 如果管理員先登陸 ,業(yè)務(wù)方無法連接; 如果業(yè)務(wù)方先登陸,管理員可以登陸一次,無法登陸第二次
共可以連接4次。
到此,相信大家對“怎么使用MySQL 5.6參數(shù)extra_port”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!