MySQL 8.0新特性 — 管理端口的使用简介
IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《MySQL 8.0新特性 — 管理端口的使用简介》,聊聊新特性、MySQL8.0、管理端口,我们一起来看看吧!
前言
下面这个报错,相信大多数童鞋都遇见过;那么碰到这个问题,我们应该怎么办呢?在MySQL 5.7及之前版本,出现“too many connection”报错,超级用户root也无法登录上去,除了重启实例,没有其他更好的解决办法;不过在MySQL 8.0版本中,是对连接管理做了一些优化,下面我们就来看一下。
ERROR 1040 (HY000): Too many connections
连接管理
在MySQL 8.0版本中,对连接管理这一块,是先后做了两个比较大的改变:一个是允许额外连接,另一个是专用的管理端口。
额外连接
在MySQL 8.0版本中,在当前连接数达到最大连接数时,服务端允许1个额外连接,可以让具有CONNECTION_ADMIN权限的用户连接进来,下面简单测试一下。
(1)为了方便测试,先调整最大连接数
mysql> set global max_connections=3; Query OK, 0 rows affected (0.00 sec)
(2)多开几个会话,以达到最大连接数
mysql> show processlist; +----+-----------------+-----------------+------+---------+--------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+-----------------+-----------------+------+---------+--------+------------------------+------------------+ | 15 | event_scheduler | localhost | NULL | Daemon | 154190 | Waiting on empty queue | NULL | | 54 | root | localhost | NULL | Query | 0 | starting | show processlist | | 55 | test | 127.0.0.1:59120 | NULL | Sleep | 19 | | NULL | | 56 | test | 127.0.0.1:59136 | NULL | Sleep | 9 | | NULL | +----+-----------------+-----------------+------+---------+--------+------------------------+------------------+ 4 rows in set (0.00 sec) mysql> show global status like 'threads_connected'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | Threads_connected | 3 | +-------------------+-------+ 4 rows in set (0.01 sec)
(3)普通用户test尝试连接,报错too many connections
$ mysql -utest -p -h127.0.0.1 -P10080 Enter password: ERROR 1040 (08004): Too many connections
(4)超级用户root尝试连接成功
$ mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 60 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
(5)再次查看当前连接数,为max_connections+1
+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+-----------------+-----------------+------+---------+--------+------------------------+------------------+ | 15 | event_scheduler | localhost | NULL | Daemon | 155064 | Waiting on empty queue | NULL | | 54 | root | localhost | NULL | Query | 0 | starting | show processlist | | 55 | test | 127.0.0.1:59120 | NULL | Sleep | 893 | | NULL | | 56 | test | 127.0.0.1:59136 | NULL | Sleep | 883 | | NULL | | 60 | root | localhost | NULL | Sleep | 141 | | NULL | +----+-----------------+-----------------+------+---------+--------+------------------------+------------------+ 5 rows in set (0.00 sec) mysql> show global status like 'threads_connected'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | Threads_connected | 4 | +-------------------+-------+ 4 rows in set (0.00 sec)
(6)超级用户root再次尝试连接,也报错too many connections
$ mysql -uroot -p Enter password: ERROR 1040 (HY000): Too many connections
通过上面测试可知,在MySQL 8.0中,允许的连接数为max_connections+1,其中这1个额外连接,只允许具有CONNECTION_ADMIN权限的用户使用。通过这1个额外连接,DBA可以使用超级用户root连接,进行kill会话等管理操作,以避免直接重启实例,降低成本,提高效率。
管理端口
额外连接,在一定程度上,提供了出现too many connection问题时的临时解决手段,但额外数量只有1个,难免会有一些意外,出现类似"连接被抢用"、“终端异常掉线”等情况。因此,在MySQL 8.0.14版本中,又推出了一个非常重要的新特性——管理端口;它允许具有SERVICE_CONNECTION_ADMIN权限的用户,通过特定的IP和PORT连接上来,且没有连接数限制。
(1)先介绍下相关参数
admin_address:监听IP地址 admin_port:监听端口 create_admin_listener_thread:是否创建一个单独的线程来监听管理连接
(2)通过配置上述参数,即可启用管理端口
mysql> show global variables like 'admin%'; +---------------+-----------+ | Variable_name | Value | +---------------+-----------+ | admin_address | 127.0.0.1 | | admin_port | 33062 | +---------------+-----------+ 2 rows in set (0.00 sec) # netstat -lntp | grep 33062 tcp 0 0 127.0.0.1:33062 0.0.0.0:* LISTEN 20042/mysqld
(3)接下来进行测试
mysql> show processlist; +----+-----------------+-----------------+------+---------+--------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+-----------------+-----------------+------+---------+--------+------------------------+------------------+ | 15 | event_scheduler | localhost | NULL | Daemon | 168750 | Waiting on empty queue | NULL | | 54 | root | localhost | NULL | Query | 0 | starting | show processlist | | 55 | test | 127.0.0.1:59120 | NULL | Sleep | 14579 | | NULL | | 56 | test | 127.0.0.1:59136 | NULL | Sleep | 14569 | | NULL | +----+-----------------+-----------------+------+---------+--------+------------------------+------------------+ 4 rows in set (0.00 sec) mysql> show global status like 'threads_connected'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | Threads_connected | 3 | +-------------------+-------+ 1 row in set (0.00 sec)
(4)普通用户test尝试连接,报错too many connections
$ mysql -utest -p -h127.0.0.1 -P10080 Enter password: ERROR 1040 (08004): Too many connections
(5)超级用户root尝试通过管理端口连接成功
$ mysql -uroot -p -h127.0.0.1 -P33062 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 62 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
(6)继续多开几个会话,使用超级用户root,通过管理端口连接成功,不受最大连接数max_connections限制
mysql> show processlist; +----+-----------------+-----------------+------+---------+--------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+-----------------+-----------------+------+---------+--------+------------------------+------------------+ | 15 | event_scheduler | localhost | NULL | Daemon | 169035 | Waiting on empty queue | NULL | | 54 | root | localhost | NULL | Query | 0 | starting | show processlist | | 55 | test | 127.0.0.1:59120 | NULL | Sleep | 14864 | | NULL | | 56 | test | 127.0.0.1:59136 | NULL | Sleep | 14854 | | NULL | | 62 | root | 127.0.0.1:47660 | NULL | Sleep | 151 | | NULL | | 63 | root | 127.0.0.1:47760 | NULL | Sleep | 52 | | NULL | | 64 | root | 127.0.0.1:47768 | NULL | Sleep | 43 | | NULL | | 65 | root | 127.0.0.1:47780 | NULL | Sleep | 35 | | NULL | | 66 | root | 127.0.0.1:47790 | NULL | Sleep | 24 | | NULL | | 67 | root | 127.0.0.1:47800 | NULL | Sleep | 16 | | NULL | | 68 | root | 127.0.0.1:47808 | NULL | Sleep | 8 | | NULL | +----+-----------------+-----------------+------+---------+--------+------------------------+------------------+ 11 rows in set (0.00 sec) mysql> show global status like 'threads_connected'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | Threads_connected | 10 | +-------------------+-------+ 1 row in set (0.00 sec)
可以说,有了管理端口这个新功能,DBA再也不用担心too many connections的问题。
总结
在MySQL 8.0版本中,为了应对too many connections的场景,先后推出了额外连接和管理端口两个新功能,可以让DBA方便、快速地解决问题;不过,这始终是一个临时应急手段,最根本的原因还是要排查应用端的配置(并发限流、SQL性能、连接池配置等等),以彻底规避此类问题。
文中关于mysql的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《MySQL 8.0新特性 — 管理端口的使用简介》文章吧,也可关注golang学习网公众号了解相关技术文章。
开启MySQL的binlog日志的方法步骤
- 上一篇
- 开启MySQL的binlog日志的方法步骤
- 下一篇
- mysql利用mysqlbinlog命令恢复误删除数据的实现
-
- 数据库 · MySQL | 23小时前 |
- MySQL数值函数大全及使用技巧
- 117浏览 收藏
-
- 数据库 · MySQL | 2天前 |
- 三种登录MySQL方法详解
- 411浏览 收藏
-
- 数据库 · MySQL | 3天前 |
- MySQL数据备份方法与工具推荐
- 420浏览 收藏
-
- 数据库 · MySQL | 3天前 |
- MySQL数据备份方法与工具推荐
- 264浏览 收藏
-
- 数据库 · MySQL | 4天前 |
- MySQL索引的作用是什么?
- 266浏览 收藏
-
- 数据库 · MySQL | 5天前 |
- MySQL排序原理与实战应用
- 392浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQLwhere条件查询技巧
- 333浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL常用数据类型有哪些?怎么选更合适?
- 234浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL常用命令大全管理员必学30条
- 448浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL高效批量插入数据方法大全
- 416浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL性能优化技巧大全
- 225浏览 收藏
-
- 数据库 · MySQL | 1星期前 |
- MySQL数据备份4种方法保障安全
- 145浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- ChatExcel酷表
- ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
- 3162次使用
-
- Any绘本
- 探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
- 3375次使用
-
- 可赞AI
- 可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
- 3403次使用
-
- 星月写作
- 星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
- 4506次使用
-
- MagicLight
- MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
- 3784次使用
-
- 嗦一嗦MySQL 8.0的新特性(二)
- 2023-01-27 478浏览
-
- Go1.18新特性工作区模糊测试及泛型的使用详解
- 2022-12-30 131浏览
-
- MySQL 8.0 对 limit 的优化技巧
- 2023-01-07 130浏览
-
- golang1.16新特性速览(推荐)
- 2023-01-26 492浏览
-
- Windows版mysql 8.0.28 安装配置方法图文教程
- 2022-12-31 298浏览

