前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 管理端口了解一下

MySQL 管理端口了解一下

作者头像
用户1278550
发布2018-08-09 14:37:59
2.7K0
发布2018-08-09 14:37:59
举报
文章被收录于专栏:idba

一 前言

作为MySQL DBA, 在运维MySQL的工作过程中,常常遇到Too many connections这个错误,如果发生故障时连数据库维护人员都不能登陆DB进行维护,是多么窘迫的事。可能有人会说可以修改配置文件,然后重启数据库来解决。恩,不过这个是很多种解决方法中可用性最差的一种,本文介绍通过 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=8316 port =3316

通过上面两个参数,来设置整个数据库的连接数。通过上面的参数配置,最多可以创建4个连接。 测试过程,通过使用下面的命令,尝试连接数据库:

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

mysql -uyang -pyang -h127.0.0.1 -P3316

结果:只能连接1次,第2次报错 ERROR 1040 (HY000): Too many connections

场景2 模拟管理员使用tcp方式连接数据库,在3个不同的session下尝试连接

sess1:

mysql -uroot -h127.0.0.1 -P3316

sess2:

mysql -uroot -h127.0.0.1 -P3316

sess3:

mysql -uroot -h127.0.0.1 -P3316 ERROR 1040 (HY000): Too many connections

结果:只能创建2个连接,第3次报错

场景3 模拟管理员使用socket连接数据库,在3个不同的session下尝试连接

sess1:

mysql -uroot -S /srv/my3316/run/mysql.sock

sess2:

mysql -uroot -S /srv/my3316/run/mysql.sock

sess3:

mysql -uroot -S /srv/my3316/run/mysql.sock ERROR 1040 (HY000): Too many connections

结果:可以创建2个连接,第3次报错 ERROR 1040 (HY000): Too many connections

场景4 使用业务账号或者root管理员占满数据库的所有连接数,然后使用extra_port 端口以root身份连接 sess1 :

mysql -uroot -h127.0.0.1 -P3316

sess2 :

mysql -uroot -h127.0.0.1 -P3316

sess3 :

mysql --port=8316 --protocol=tcp -uroot -h127.0.0.1

sess4 :

mysql --port=8316 --protocol=tcp -uroot -h127.0.0.1

以上都可以登陆DB,再次使用管理端口

sess5 :

$ mysql --port=8316 --protocol=tcp -uroot -h127.0.0.1 ERROR 1040 (HY000): Too many connections

结果:可以使用创建正常连接2个,管理端口连接2个,第3次报错 ERROR 1040 (HY000): Too many connections

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

mysql -uyang -pyang -h127.0.0.1 -P3316 mysql -S /srv/my3316/run/mysql.sock mysql -uroot -h127.0.0.1 -P3316

结果:

如果管理员先登陆 ,业务方无法连接;

如果业务方先登陆,管理员可以登陆一次,无法登陆第二次共可以连接4次。

四 总结

1 如果不用extra_port参数,MySQL max_connections个连接全部被占用,DBA仍可以root或者说是具有super权限连接到DB对DB进行管理,但是只能连接一次。业务账号只能登陆 max_connection 次。

2 如果使用extra_port参数,MySQL max_connections个连接全部被占用,DBA可以以管理员权限创建 extra_max_connections + max_connections +2 个连接。

3 max_connections的特性 MySQL无论如何都会保留一个用于管理员(SUPER)登陆的连接,用于管理员连接数据库进行维护操作,即使当前连接数已经达到了max_connections。因此MySQL的实际最大可连接数为max_connections+1(不考虑管理端口登陆);

这个参数实际起作用的最大值(实际最大可连接数)为100000,即该参数最大值不能超过100000,即使超过也以100000为准;增加max_connections参数的值,不会占用太多系统资源。

参考

https://dev.mysql.com/doc/refman/5.7/en/too-many-connections.html

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_connections

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 前言
  • 二 认识 extra_port
  • 三 extra_port 测试
  • 四 总结
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档