MySQL8.0新特性之解決too many connections


眾所周知,目前數據庫在超過設置最大連接數時,會報too many connections,把新的連接拒之門外,而在MariaDB 10.0和Percona5.6版本中,有個參數extra_port可以額外登陸到數據庫解決這個連接問題。

MySQL官方終於在8.0.14這個版本也推出了相關參數。

主要包含幾個配置參數:admin_address: 用於指定管理員發起tcp連接的主機地址,可以是ipv4,ipv6, 或者Host name等等,他類似bind-address,但不同的是只能接受一個ip地址

admin_port: 顧名思義,就是管理員用來連接的端口號,注意如果admin_address沒有設置的話,這個端口號是無效的

create_admin_listener_thread: 是否創建一個單獨的listener線程來監聽admin的鏈接請求,默認值是關閉的,facebook的建議是打開,否則其會使用已有的監聽線程去監聽admin連接。該參數同樣需要admin_address打開, 否則沒有任何影響

注意必須要有權限service_connection_admin才能登陸該端口,否則會報錯

根據文檔描述,admin port的連接個數不受max_connection或者Max_user_connection的限制。

基於此特性,做了一些測試:

根據官方文檔要求,調整了一下參數

 

 將數據庫連接打滿,然后通過admin_port連接數據庫,

 

 

 

 通過線程表查看,正常root用戶連接數據庫的方式和通過admin_port連接數據庫的方式不同:

 

 

 

 一個是走本地socket,而另一個是走SSL/TLS,8.0版本中加密方式也做了增強,默認都是以caching_sha2_password插件來做的,還以原來方式連接數據庫就會報以下錯誤。

ERROR 1251 (08004): Client does not support authentication protocol requested by server; consider upgrading MySQL client        

可以選擇在配置文件中加上default_authentication_plugin = mysql_native_password重新走原來的加密方式,但是不推薦再用以前的,畢竟MySQL5.7版本到明年官方就不再維護BUG了,讓我們一起擁抱8.0吧。

 

 

http://mysql.taobao.org/monthly/2019/09/03/              


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM