加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

怎么利用MySQL 5.6参数extra_port

发布时间:2023-08-17 13:11:21 所属栏目:MySql教程 来源:
导读:本篇内容主要讲解“怎么使用MySQL 5.6参数extra_port”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用MySQL 5.6参数extra_port”吧!一

本篇内容主要讲解“怎么使用MySQL 5.6参数extra_port”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用MySQL 5.6参数extra_port”吧!

一 前言

  作为MySQL DBA, 在运维MySQL的工作过程中,常常遇到Too many connections这个错误,这时作为数据库维护人员都不能登陆数据库进行维护 是多么窘迫的事。可能有人会说可以修改配置文件,然后重启数据库来解决。恩,不过这个是很多种解决方法中 可用性最差的一种,本文介绍通过 5.6 新的特性--管理端口 来解决这个问题。

二 认识 extra_port

  MySQL 在5.6.14 版本之后引入一个参数extra_port 用来解决too many connections的问题。

percona 官方介绍:

从官方文档介绍来看,在MySQL启动的时候使用该参数指定一个端口号(不要和正常的数据库服务端口冲突),Percona Server会监听来自该端口的请求。启用该参数可以解决使用thread_pool特性时,由于所有的连接池worker忙于处理慢querey或者被锁定导致DBA无法通过正常的端口连接DB, 以便DBA可以正常维护数据库。

具体用法如下:

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 该参数主要是控制通过管理端口可以创建多少个连接。

官方介绍:

   "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 测试

  测试环境:5.6.26-74.0-log Percona Server

  参数设置:

max_connections = 1

extra_max_connections = 1

extra_port=13306

通过上面两个参数,来设置整个数据库的连接数。通过上面的参数配置,最多可以创建4个连接。

测试过程,通过使用下面的命令,尝试连接数据库:

场景1 模拟业务连接数据库,在两个不同的session下尝试连接 

mysql -uyang -pyang -h227.0.0.1 -P3306

场景2 模拟DBA连接数据库,在两个不同的session下尝试连接

mysql -uroot -h227.0.0.1 -P3306

场景3 模拟DBA连接数据库,在两个不同的session下尝试连接

mysql -S /srv/my_3306/run/mysql.sock

场景4 占满数据库的所有连接数,然后使用extra_port 端口以root身份连接

mysql --port=13306 --protocol=tcp -uroot -h227.0.0.1

场景5 占满数据库的所有连接数,然后使用extra_port 端口以业务身份连接

mysql --port=13306 --protocol=tcp -uyang -pyang -h227.0.0.1

场景6 这次不指定通信协议,尝试连接

mysql --port=13306 -uyang -pyang -h227.0.0.1

场景7 模拟DBA和业务同时连接数据库,在两个不同的session下尝试连接

mysql -uyang -pyang -h227.0.0.1 -P3306

mysql -S /srv/my_3306/run/mysql.sock

mysql -uroot -h227.0.0.1 -P3306

测试的结果

   场景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, 在业务占用连接池满,以管理员可以连接2次,

   场景7 如果管理员先登陆 ,业务方无法连接; 如果业务方先登陆,管理员可以登陆一次,无法登陆第二次

   共可以连接4次。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章