运维实践|采集MySQL数据出现many connection errors

文章目录

  • 问题出现
  • 问题分析
    • 当前环境
    • 问题分析
  • 解决方案
    • 1 检查调度事件任务是否开启
    • 2 开启调度事件任务
    • 3 创建一张日志表
    • 4 创建函数存储过程
    • 5 创建事件定时器
    • 6 开启事件调度任务
    • 7 检查核实是否创建
  • 总结

问题出现

最近在做OGG结构化数据采集工作,在数据采集过程中,数据库总是出现连接错误,导致阻塞。并提示以下错误:

Host is blocked because of many connection errors;unblock with
‘mysqladmin flush-hosts’

这里手动的解决方法是去数据库执行脚本: FLUSH HOSTS;。执行完成刷新缓存后,我已经将数据库错误连接数调大了,但是还是没一会就出错。
在这里插入图片描述

问题分析

当前环境

测试机器: macOS , Kylin V10 SP1

MySQL版本: MySQL 8.0.31 CE, MySQL 8.0.29 CE

问题分析

在网上搜索到一段话:

If more than this many successive connection requests from a host are
interrupted without a successful connection, the server blocks that
host from further connections. You can unblock blocked hosts by
flushing the host cache. To do so, issue a FLUSH HOSTS statement or
execute a mysqladmin flush-hosts command. If a connection is
established successfully within fewer than max_connect_errors attempts
after a previous connection was interrupted, the error count for the
host is cleared to zero. However, once a host is blocked, flushing the
host cache is the only way to unblock it. The default is 100.

简单解释下就是:因为由于网络异常而中止数据库连接

MySQL客户端与数据库建立连接需要发起三次握手协议,正常情况下,这个时间非常短,但是一旦网络异常,网络超时等因素出现,就会导致这个握手协议无法完成,MySQL有个参数、 connect_timeout ,它是MySQL服务端进程mysqld等待连接建立完成的时间,单位为秒。如果超过connect_timeout时间范围内,仍然无法完成协议握手话,MySQL客户端会收到异常,异常消息类似于: Lost connection to MySQL server at ‘XXX’, system error: errno,该变量默认是10秒
在这里插入图片描述

看到这里,在网上搜索了下并结合提示信息,也有很多解决方案,例如在服务器中创建一个调度任务,定时刷新缓存错误数据,那就开始试试。

解决方案

1 检查调度事件任务是否开启

执行脚本命令查看调度是否开启

mysql> SHOW VARIABLES LIKE '%event%';

在这里插入图片描述

2 开启调度事件任务

上面说明我这服务器已经开启了事件任务,如果没有开启,业务需担心,则执行以下命令(OFF或者0或者DISABLED),可以使用下面的命令临时处理下:

SET GLOBAL event_scheduler = 1;

上面开启事件任务是临时的,如果服务器重新启动或者MySQL服务重新启动,没有开启的事件任务会被还原,此时需要在配置文件配置启动服务时启动调度事件。在 my.cnf 中的 [mysqld]部分添加如下内容,然后重启mysql服务

event_scheduler=ON

3 创建一张日志表

创建一张名称为 it_flush_hosts_log 的表,此步骤如果不需要可以省略,用来记录调度器执行的日志信息。

DROP TABLE IF EXISTS it_flush_hosts_log;CREATE TABLE it_flush_hosts_log(id INT(10) NOT NULL AUTO_INCREMENT COMMENT '序号',proc_name VARCHAR(64)  NULL DEFAULT 'proce_flush_hosts' COMMENT '函数存储过程',event_name VARCHAR(64) NULL DEFAULT 'event_flush_hosts' COMMENT '事件调度器',create_by VARCHAR(64) NULL DEFAULT NULL COMMENT '日志记录人',create_time datetime NULL DEFAULT NULL COMMENT '日志记录时间',PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT '清理缓存日志表';

4 创建函数存储过程

此时需要创建一个函数,名称为 flush_hosts_proce 存储过程的方式来执行程序,也就是我们常说的执行器。

DROP PROCEDURE IF EXISTS proce_flush_hosts;CREATE PROCEDURE proce_flush_hosts()
BEGINFLUSH HOSTS;INSERT INTO it_flush_hosts_log VALUE (null, 'proce_flush_hosts', 'event_flush_hosts', 'root', NOW());
END

5 创建事件定时器

创建一个名称为 event_flush_hosts 事件定时器(不启动)。这个事件会从现在开始,每隔1个月执行一次,并调用一个名称为 flush_hosts_proce 的存储过程。

DROP EVENT IF EXISTS event_flush_hosts;CREATE EVENT event_flush_hostsON SCHEDULE EVERY 1 MONTHON COMPLETION PRESERVE DISABLE
COMMENT '每个月1号清理主机缓存'
DO CALL flush_hosts_proce();

6 开启事件调度任务

执行下面的命令,开启调度定时器。

ALTER EVENT event_flush_hosts ON COMPLETION PRESERVE ENABLE;

注意⚠️:此步骤可以同上面的步骤5合并,直接使用 ENABLE 开启也是可以的。

7 检查核实是否创建

核实创建的是否准确,可以执行下面的命令,也可以使用GUI图形界面化工具查看。

SHOW PROCEDURE STATUS WHERE NAME LIKE 'proce_flush_hosts';SHOW EVENTS WHERE NAME LIKE 'event_flush_hosts';

在这里插入图片描述
在这里插入图片描述

总结

有问题不可怕,有问题不解决才可怕。对于中年人来说,学习新技能或知识并不晚。事实上,许多人都是在中年甚至老年时才找到自己真正热爱的事情并开始学习。我感觉学习给予我最大的快乐就是预防以后的老年痴呆症。


欢迎关注博主 「六月暴雪飞梨花」 或加入【六月暴雪飞梨花社区】一起学习和分享Linux、C、C++、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。

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

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

相关文章

抖音商品详情API接口在电商行业中的重要性及实时数据获取实现

随着移动互联网的快速发展,电商行业不断壮大。抖音作为一款短视频社交应用,近年来在电商领域取得了显著成果。本文将探讨抖音商品详情API接口在电商行业中的重要性,以及如何通过实时数据获取提高业务效率。我们将介绍相关的技术背景、API接口…

AngularJS

理解实现代码的逻辑为主要,代码怎么写为次要。 参考资料: 《AngularJS入门与进阶》,江荣波著 前端开发常用框架 React:由Facebook开发,用于构建用户界面的JavaScript库,以组件化和虚拟DOM著称。 Angular&…

2024最新FL Studio21.2MAC电脑版中文版下载安装步骤教程

FL Studio 简称FL,全称Fruity Loops Studio,因此国人习惯叫它"水果"。目前最新版本是FL Studio21.1.1.3750版本,它让你的计算机就像是全功能的录音室,大混音盘,非常先进的制作工具,让你的音乐突破…

docker的资源限制及容器应用

一、docker资源限制 在使用 docker 运行容器时,一台主机上可能会运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU、内存和磁盘资源。如果不对容器使用的资源进行限制,那么容器之间会互相影响,小的来说…

DC-5靶场

目录 DC-5靶机: 先进行主机发现: 发现文件包含: 上传一句话木马: 反弹shell: 提权漏洞利用: 下载exp: 第一个文件 libhax.c 第二个文件r…

电子电器架构( E/E) 演化 —— 大算力

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

PowerShell实战:Get-Content命令使用详解

目录 一、Get-Content介绍 二、语法格式 三、参数详解 四、使用案例 4.1 获取文件内容 4.2 获取文件前三行内容 4.3 获取文件最后三行内容 4.4通过管道方式获取最后两行内容 4.5使用逗号作为分隔符 4.6 Filter方式读取多个文件 4.7 Include方式读取多个文件 一、Get-Content介绍…

Oracle VM VirtualBox使用——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

简述: Oracle VM VirtualBox是一款开源虚拟机软件,由德国Innotek公司开发,后被Sun Microsystems公司收购,并最终被甲骨文公司收购。它支持在Windows、Mac OS X、Linux、OpenBSD、Solaris、IBM OS2甚至Android等操作系统上创建虚拟…

真正的软件测试常见的面试题,到底有哪些?

01、您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 答:有黑盒和白盒两种测试种类,黑盒有等价类划分法,边界分析法,因果图法和错误猜测法。白盒有逻辑覆盖法&…

PostgreSQL的安装、配置与使用指南

文章目录 一、介绍二、安装1、下载安装2、验证 三、配置1、远程连接配置1)配置postgresql.conf2)配置pg_hba.conf3)重启 2、配置数据库的日志 四、图形化界面1、pgAdmin2、Navicat 一、介绍 PostgreSQL是一个功能强大的 开源 的关系型数据库…

分类预测 | Matlab实现AOA-SVM算术优化支持向量机的数据分类预测【23年新算法】

分类预测 | Matlab实现AOA-SVM算术优化支持向量机的数据分类预测【23年新算法】 目录 分类预测 | Matlab实现AOA-SVM算术优化支持向量机的数据分类预测【23年新算法】分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现AOA-SVM算术优化支持向量机的数据分类预测…

5.docker容器及相关命令

docker中的容器实际上就是宿主机中的一个进程 目录 1 创建并启动容器 docker run 1.1 如果没有指定的镜像的话,docker会尝试从源拉取 1.2 给容器起名字 --name 1.3 交互方式启动(-i)与弹出客户端(-t) 1.4 指定端口 -p 1.5 自动分配端口 -P 1.6 后台运…

element plus 日期范围 自定义内容

问题: 按照官网上的自定义内容示例,修改日期选择器没有问题,如果修改日期范围选择器,修改后会丢失日期范围选择时的样式。 解决: 从F12中不难看出日期范围的选择样式来自于.el-date-table-cell 而示例中写的是.cell&…

文件系统和软硬链接(下)

在这里我们首先学习两个新的知识点第一个: 第二个: 下面我们再来理解思考下面的四个问题: 我们首先来解决第一个问题如果新建一个文件Linux系统会做什么呢? 新建文件,系统会做什么 当我们要新建一个文件的时候&#…

Shell三剑客:sed(命令)二

一、插入命令:i(之前) [rootlocalhost ~]# sed -r 2i aaaaaaa passwd.txt root:x:0:0:root:/root:/bin/bash aaaaaaa bin:x:1:1:bin:/bin:/sbin/nologin[rootlocalhost ~]# sed -r 2i aaaaaaa\ > bbb\ > ccc passwd.txt root:x:0:0:r…

vue3中ref及reactive的说明

目录 1.响应式说明 2.vue3的ref及reactive的使用 3.reactive响应式失效问题 4.总结 1.响应式说明 vue的响应式是vue框架中的核心概念之一,它是指当数据发生变化时,vue能够自动更新视图。vue2的响应式是基于Object.defineProperty进行实现的。 当你把…

Spring Cloud:Eureka

目录 一、Eureka介绍 1.Eureka的作用 2.总结 二.搭建Eureka服务端步骤 1.导入maven依赖 2.编写启动类,添加EnableEurekaServer注解 3.添加application.yml文件,编写下面的配置: 三.注册Eureka客户端服务提供者(user-servic…

【每日OJ—有效的括号(栈)】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 1、有效的括号题目: 1.1方法讲解: 1.2代码实现: 总结 前言 世上有两种耀眼的光芒,一种是正在升起的太阳&#…

系统架构设计师教程(五)软件工程基础知识

软件工程基础知识 5.1 软件工程5.1.1 软件工程定义5.1.2 软件过程模型5.1.3 敏捷模型敏捷开发的特点敏捷方法的核心思想主要敏捷方法简介 5.1.4 统一过程模型 (RUP)RUP的生命周期RUP中的核心概念RUP的特点 5.1.5 软件能力成熟度模型 5.2 需求工程5.2.1 需求获取需求获取的基本步…

HashMap扩容机制详解

目录 1. 扩容的触发条件 2. 扩容的具体步骤 2.1 计算新的容量 2.2 创建新的桶数组 2.3 将元素重新分配到新的桶数组中 2.4 更新容量和阈值 3. 与并发性能的关系 4. 扩容的性能优化 5. 总结 HashMap是Java中常用的数据结构之一,用于存储键值对。在HashMap内…