高级DBA带你处理MySQL客户端程序频繁访问MYSQL数据库并错误链接不释放导致连接数爆满事故实战

news2024/11/29 2:31:26

高级DBA带你处理MySQL客户端程序频繁访问MYSQL数据库并错误链接不释放导致连接数爆满事故实战

一、生产事故描述

Mysql生产数据库最大连接数爆满,其余客户端也同样拿不到数据库连接,生产异常,数据传输失败!
报错如下:

在这里插入图片描述

已经排查出某一个数据库用户错误连接非常多,并且不释放!

用这个用户登录程序错误!
在这里插入图片描述

在这里插入图片描述
用户过多错误连接已经被锁定!!

二、问题解决方法

步骤一 排查出引起连接错误过多的账号,关掉起客户端的程序

关掉程序,避免再频繁攻击主数据库!

步骤二 删掉那些错误的连接,避免占着数据库资源!让其他用户拿不到连接!!

select concat('kill ',ID,';')  
from information_schema.PROCESSLIST 
where Command='Connect' and 
STATE='Waiting in connection_control plugin';  #批量删掉错误连接
select ID from information_schema.PROCESSLIST 
where Command='Connect' and 
STATE='Waiting in connection_control plugin';  # ID 为查询的线程ID

我们可以用工具批量删除这些错误的连接,释放数据库,也可以执行上面的语句批量删!
在这里插入图片描述

步骤三 这个要MYSQL客户端去解决频繁访问数据库的调度

这个是要客户端程序去解决的,就是这个数据库调度跟释放的逻辑!

步骤四 重新验证问题是否解决

ALTER USER 'username'@'localhost' ACCOUNT UNLOCK;  #用户解锁
SHOW  VARIABLES LIKE 'max_connect_errors'; #查询系统当前的配置值

加大运行错误连接的个数!

set global max_connect_errors = 500;
重新打开之前的客户端程序再通过数据库监控,查看之前的问题是否已经解决!

三、总结

MySQL Waiting in connection_control plugin 的含义解释

MySQL中出现"Waiting in connection_control plugin"表示客户端连接请求被Connection-Control Plugins插件拦截,连接处于等待用户身份验证的状态。出现该问题的原因可能是用户名或密码错误,导致默认MySQL连接数被耗尽。可以尝试修改Connection-Control Plugins插件的配置参数来解决该问题,例如将connection_control.failed_login_threshold参数设置为一个非常大的值,从而达到类似禁用插件的效果。

事故应该是,MYSQL客户端程序配置错了用户名密码,然后程序无限制的频繁反复重连数据库!
然后找发现还会生成状态为“Waiting in connection_control plugin”的等待连接,
经查询对应的Host,原来是自己的一个很旧的服务在一直跑着,但后来mysql密码更改了,造成这个程序一下在重新尝试连接Mysql,,,杀掉它,问题解决。。。

其他可能原因,比如密码失效,密码过期了,但是程序一直起着!或者超出数据库打开文件数的值!
原因1.
数据库打开文件数超过linux默认打开文件
数量1024 ulimit -a
查看openfiles数量
原因2.
用户名或密码错误,不停连接,默认mysql连接数被耗尽.
根因:链接异常(用户名密码错误)导致connectioncontrol 插件进行拦截,拦截用户身份验证处于 “waiting in connection_control plugin” 的链接延迟状态。

解决方案:

修改connection_control 插件配置参数 - 可选

SET GLOBAL connection_control.failed_login_threshold = 1000000; #这个不建议

将 connection_control.failed_login_threshold 参数设置为一个非常大的值,这将使插件几乎不再对登录尝试进行限制,从而达到类似禁用的效果。请注意,这种方法并非官方推荐的禁用插件的方式,因此在生产环境中使用时需要谨慎考虑可能的影响
也有可能是Mysql密码自动过期了,此时微服务也会报错。
提示密码过期: SQLException: Your password has expired. To log in you must change it using a client that supports e
由于密码过期导致连接失败,所以也会频繁重连,此时ip可能会被Mysql block 。 此时数据库负载可能也会突然升高。
java.sql.SQLException: null, message from server: “Host ‘172.18.224.48’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’”)

解决方案

解决密码过期问题 - 重置密码即可
或者临时取消过期机制: ALTER USER ‘repl’@‘%’ PASSWORD EXPIRE NEVER;
解决黑名单问题 - mysql> FLUSH HOSTS;

笔者简介
国内某一线知名软件公司企业认证在职员工:任JAVA高级研发工程师,大数据领域专家,数据库领域专家兼任高级DBA!10年软件开发经验!现任国内某大型软件公司大数据研发工程师、MySQL数据库DBA,软件架构师。直接参与设计国家级亿级别大数据项目!并维护真实企业级生产数据库300余个!紧急处理数据库生产事故上百起,挽回数据丢失所造成的灾难损失不计其数!并为某国家级大数据系统的技术方案(国家知识产权局颁布)专利权的第一专利发明人!

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1560248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有趣的css - 文字下划线条动画按钮

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是用 css 实现文字下划线条动画按钮。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页…

【WEEK5】 【DAY5】DML语言【中文版】

2024.3.29 Friday 目录 3.DML语言3.1.外键(了解)3.1.1.概念3.1.2.作用3.1.3.添加(书写)外键的几种方法3.1.3.1.创建表时直接在主动引用的表里写(被引用的表的被引用的部分)3.1.3.2.先创建表后修改表以添加…

近年来,常见5大软件开发项目管理工具

时代进步,技术进步,汇总下近几年5大常用的软件开发项目管理工具。 1、微软项目管理软件 Microsoft Project(或MSP)是由微软开发销售的项目管理软件程序。软件设计目的在于协助项目经理制定发展计划、为任务分配资源、跟踪进度、管…

目标检测——门牌号数据集

一、重要性及意义 识别自然场景图像中的数字和号码具有极高的重要性和意义,这主要体现在以下几个方面: 实际应用广泛性:自然场景中的数字和号码识别技术在日常生活中有着广泛的应用。例如,在自动驾驶车辆中,准确识别路…

【网站项目】面向社区健康服务的医疗平台

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

【动手学深度学习】深入浅出深度学习之利用神经网络识别螺旋状数据集

目录 🌞一、实验目的 🌞二、实验准备 🌞三、实验内容 🌼1. 生成螺旋状数据集 🌼2. 打印数据集 🌼3. 编程实现 🌻仿射层-Affine类 🌻传播层-Sigmoid类 🌻损失函数…

SSH连接SFTP传输:如何使用libssh库在windows环境下进行(文件、文件夹)传输到远端服务器

配置环境cmake编译libssh如何使用生成的dll与lib文件配置lib 方法一配置lib 方法二配置dll方法一 将dll配置进入环境变量配置dll方法二 在编译过后将dll直接与可执行文件.exe文件放在同一目录下传输文件、文件夹代码(适配windows) 由于windows上的编译器…

C语言 | Leetcode C语言题解之第2题两数相加

题目: 题解: struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {struct ListNode *head NULL, *tail NULL;int carry 0;while (l1 || l2) {int n1 l1 ? l1->val : 0;int n2 l2 ? l2->val : 0;int sum n1 n2 …

使用 Spring Email 和 Thymeleaf 技术,向新注册用户发送激活邮件(一)

这篇内容对应"2.1 发送邮件"小节 对应视频:9-发送邮件 视频链接 邮箱设置 需要去邮箱对应的官方客户端软件或网站开启IMAP/SMTP服务或POP3/SMTP服务器 如果不开启,就无法使用第三方用户代理,只能走第官方的电子邮件客户端软件或…

GT收发器第一篇_总体结构介绍

文章目录 前言GT收发器介绍 前言 之前写过一篇简单介绍GT的文章https://blog.csdn.net/m0_56222647/article/details/136730026,可以先通过这篇文章对整体进行简单了解一下。 GT收发器介绍 参考xilinx手册ug476 对于7系列的FPGA,共有3个系列&#xf…

3D检测:从pointnet,voxelnet,pointpillar到centerpoint

记录centerpoint学习笔记。目前被引用1275次,非常高。 地址:Center-Based 3D Object Detection and Tracking (thecvf.com) GitHub - tianweiy/CenterPoint CenterPoint:三维点云目标检测算法梳理及最新进展(CVPR2021&#xff…

【Java初阶(七)】接口

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ 🚚我的代码仓库: 33的代码仓库🚚 目录 1.前言2.接口2.1语法规则2.2接口使用2.3接口特性2.4实现多个接口2.5接口使用实例2.6Clonable接口和深拷贝 3.Object类3.1对象比较equals方法3.2hashcod…

Vivado使用(1)——综合的约束与策略

目录 一、概述 二、约束与策略 2.1 约束 2.1.1 物理约束 2.1.2 时序约束 2.2 综合策略 2.2.1 flatten_hierarchy 2.2.2 gated_clock_conversion 2.2.3 bufg 2.2.4 fanout_limit 2.2.5 directive 2.2.6 retiming 2.2.7 fsm_extraction 2.2.8 keep_equivalent_regi…

Uibot6.0 (RPA财务机器人师资培训第6天 )发票验真机器人案例实战

类似于小北的这篇博客:Uibot (RPA设计软件)Mage AI智能识别(发票识别)———课前材料五_uibot 添加mageai-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/135591297?spm1001.2014.3001.5501训练网站:泓江…

嵌入式科普(14)指针---这些年嵌入式工程师也不容易理解的词语

目录 一、指针(Pointer): 1.1 动态内存管理: 1.2 数组和字符串操作: 1.3 函数参数传递: 1.4 数据结构实现(链表): 1.5 实现回调函数: 1.6 提高性能&am…

Day63-LVS四层负载均衡及结合Nginx7层负载均衡实践

Day63-LVS四层负载均衡及结合Nginx7层负载均衡实践 1. LVS(Linux Virtual Server)介绍2. IPVS(LVS)发展史3. IPVS软件工作层次图4. LVS技术点小结5. LVS的4模式原理讲解5.1 NAT(Network AddressTranslation),中文网络地…

纽扣电池CR1632没有电解决方案

使用环境 在使用小米的自拍杆时,发现纽扣电池没有电量了逛了下超市,结果发现都没有卖这个型号的电池,但是下午又要拍照,于是想起了应急的充电方法。声明一下,这个内置电池型号是CR1632,然而市面上&#xff…

vue基础教程(5)——十分钟吃透vue路由router

同学们可以私信我加入学习群! 正文开始 前言一、路由概念二、路由使用三、创建路由对应的组件四、给整个项目一个入口总结 前言 前面的文章运行成功后,页面显示如下: 在这个页面中,点击Home和About都会切换右面的页面内容&#…

什么是Redis数据一致性?如何解决?

在系统中缓存最常用的策略是:服务端需要同时维护DB和cache,并且是以DB的结果为准–Cache-Aside Pattern(缓存分离模式、旁路缓存) 读数据 单纯的读数据是不会产生数据不一致,只有并发下读和写才会存在数据不一致。 写…

插入排序---算法

1、算法概念 插入排序:它的工作原理是通过构建有序排序,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置插入。 2、算法步骤 将第一待排序序列第一个元素看作一个有序序列,把第二个元素到最后一个元素当成是…