4天4夜渡劫成功,解决10月1项目上线遇到的一个Mysql大坑,导致项目无法正常访问

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 4天4夜渡劫成功,解决10月1项目上线遇到的一个Mysql大坑,导致项目无法正常访问


标题是不是惊讶到你了,但是确实是一个大坑,特此记录下来,方便他人查阅。

标题虽然夸张了,但是问题确实真真实实的。

一、问题重现

由于工作室的几个团队需要发布项目,参加比赛。

正好都挤在了最后2天,时间也比较紧张。

由于学弟学妹们对项目在服务器上的部署过程并不是太熟悉,又恰巧我对这方面还略知一二,还因为我有一台比学生机配置稍微高一点的阿里云服务器(几年前阿里云搞活动花了我好几千买的几年的,心痛啊)。

他们都需要提交作品的url,和演示PPT、演示视频等材料。

url是必须要写在PPT里的,所以他们就比较着急呀,我的服务器是Linux的,我玩的可能比较6,但是学弟学妹们可能就不太行了。

但是我当时也没办法帮他们部署到服务器,因为我当时还在上班。我就把Linux服务器的磁盘给初始化调,然后给他们安装了一个windows 2008 R2的服务器。

并且指出来了一个很好的部署方法:

配置的和开发环境一样就行了,直接启动idea。

这种虽然不是正规的部署方法,但是对于他们是很有效的。

三个项目:

服务器也给他们临时升级了下内存和带宽还有存储:

但是项目每过一段时间就会出现问题,错误如下:

报错的代码提示:

### Cause: java.sql.SQLException: Could not retrieve transation read-only status server
; SQL []; Could not retrieve transation read-only status server; nested exception is java.sql.SQLException: Could not retrieve transation read-only status server] with root cause
java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.

二、排查问题

网上说配置文件的问题,也有的说是连接mysql的时候有问题,各方面都有,综合所述排查起来非常的困难。

代码在本地跑起来是没问题的,在线上就有问题了。

那只能是服务器的问题了。

就这样断断续续的尝试了4天4夜,,这4天4夜是在有时间的情况下,哈哈,并不是从天亮到天黑的那种。

往上所说的解决办法都不起作用。

只好亲自手动去一点一点排查了。

1、检查了配置文件,没问题;

2、检查Mysql的配置文件。

发现Mysql的连接的超时时间和本地的Mysql的超时时间是不一致的。只有短短的120秒,所以这个地方是存在问题的,无疑了。

可以通过下方这个命令进行查看关于时间的配置信息:

show variables like '%timeout%'

三、解决问题

修改配置文件呗;把相关的这两条修改一下。

可以通过set命令来暂时修改:

set wait_timeout= 86400;
set interactive_timeout= 86400;

查看是否修改成功:

但是如果重启的话,就会恢复过来默认的。

那么就需要修改配置文件了:

[mysqld]
...省略其他的
interactive_timeout=86400
wait_timeout=86400
...省略其他的

修改之后需要重新启动Mysql服务。

就是永久的了。

至此问题解决了。

四、关于Mysql这两个参数的作用以及解释

可以打开Mysql的官方手册:

https://dev.mysql.com/doc/refman/5.7/en

然后找到Mysql的系统变量说明:

然后搜索一下,你需要查看的变量:

  • wait_timeout

官方解释:

The number of seconds the server waits for activity on a noninteractive connection before closing it.


On thread startup, the session wait_timeout value is initialized from the global wait_timeout value or from the global interactive_timeout value, depending on the type of client (as defined by the CLIENT_INTERACTIVE connect option to mysql_real_connect()). See also interactive_timeout.

服务器关闭交互式连接前等待活动的秒数。


交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。又见wait_timeout

  • interactive_timeout

官方解释:

The number of seconds the server waits for activity on an interactive connection before closing it.


An interactive client is defined as a client that uses the CLIENT_INTERACTIVE option to mysql_real_connect(). See also wait_timeout.

服务器关闭非交互连接之前等待活动的秒数。


在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义),又见interactive_timeout

五、总结

其实这就很奇怪的,Mysql的默认值是28800,为什么我查询到的默认值是120呢?????

通过查看学弟安装的Mysql我才知道,他是为了省事,直接安装的下面这个软件;所以还是有风险的,还是用官方的安装比较稳!!!!


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
关系型数据库 MySQL Java
【MySQL+java+jpa】MySQL数据返回项目的感悟
【MySQL+java+jpa】MySQL数据返回项目的感悟
44 1
|
1月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
3月前
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之如何跨账号访问同一个MySQL
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
13天前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
36 8
|
1月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
301 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
29天前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
22天前
|
关系型数据库 MySQL Java
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
24 0
|
1月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
46 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
2月前
|
SQL 关系型数据库 MySQL
springboot项目操作mysql出现锁表问题情况
springboot项目操作mysql出现锁表问题情况
44 2
|
3月前
|
关系型数据库 MySQL 应用服务中间件
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
这篇文章介绍了如何在Windows 7系统上搭建PHP、MySQL和Apache环境,并部署ECShop项目,包括安装配置步骤、解决常见问题以及使用XAMPP集成环境的替代方案。
56 1
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目