前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >部署到服务器上的项目隔段时间访问查不到数据?服务器上安装mysql都要调整的参数

部署到服务器上的项目隔段时间访问查不到数据?服务器上安装mysql都要调整的参数

原创
作者头像
后端小白
发布2024-12-30 11:14:34
发布2024-12-30 11:14:34
940
举报

最近在部署一个项目,试用了一个腾讯云的服务器,正常安装docker和mysql,构建镜像以及启动容器;后面发现只要我隔段时间不去访问项目,就会出现数据库无法查询的情况,项目查不到数据;查看数据库和项目有关的那个数据库直接消失了?!!然后mysql容器也自己停掉了?!

一直在网上寻求解决方式,以为是服务器的问题,因为之前用阿里云服务器并没有这种情况;查看服务器内存也很充足,实在找不到有什么解决方法;

好在是经过一番讨论最后是解决了。

一、查看错误原因

首先去查找原先被迫停掉的mysql容器的日志:

代码语言:txt
复制
docker logs 容器名

查到的结果是这样的:

mysql容器日志截图
mysql容器日志截图
mysql容器日志截图
mysql容器日志截图

可以大概得到的是当前正在停掉mysqld这个服务,也就是服务器在我没有执行操作的情况下自动关闭mysql;查看内存空间充足,不可能因为内存问题被迫停掉mysqld这个进程;所以是什么原因呢?

二、问题出自mysql而不是服务器

查阅了超多博客和技术网站,还问了一些大佬,费了老大的劲终于知道了原因

我们在启动mysql后,当mysql在启动状态中连续8小时没有任何外部操作,例如创建数据库,增删改查等,mysql会自己关闭掉,停掉mysql服务;

在mysql中存在两个系统变量,一个是interactive_timeout;interactive_timeout 指定了mysql在交互式客户端空闲了(也就是没有任何操作)多长时间自动关闭, 默认值是28800秒,也就是8小时;交互式客户端指的是能直接对mysql进行交互的客户端,如MySQL shell, Mysql命令行客户端;而wait_timeout指定了mysql在非交互式客户端空闲了多长时间自动关闭,默认值依旧是28800秒,8小时;非交互式客户端指的是那些通过编程方式连接到mysql的应用程序,例如JDBC,ODBC等数据库连接池;

之前项目隔段时间莫名查不到数据的根本原因在于服务器上的mysql空闲时间超过了8小时,也就是我们没有去访问项目超过了8小时,导致服务器上的mysql自动关闭了;mysql自动关闭当然就查不到数据;

如果不修改这两个参数,对于长期上线的web应用程序必然会出现数据无法查询的错误;

三、解决方案

知道了是哪两个参数出了问题,接下来修改这两个参数的默认值即可

1、在windows系统中

找到mysql的配置文件my.ini,这个文件通常在C:/ProgramData/ Mysql / Mysql Server X.Y / my.ini 下,前面的 X.Y 指的是mysql的版本号;由于ProgramData文件夹是隐藏文件,如果要访问需要在文件资源管理器中设置显示隐藏文件选项;

然后打开my.ini后在这个文件中添加mysql的属性:

代码语言:txt
复制
interactive_timeout = 2880000
wait_timeout = 2880000

添加两行代码后,mysql无论与哪种客户端交互的空闲时间都被设置成800小时,也就是在800个小时内没人访问这个项目mysql都不会自动关闭;

2、在Linux系统中

找到并编辑mysql的Linux版的配置文件my.cnf :

代码语言:txt
复制
vim /etc/my.cnf

然后在配置文件中依然添加下列两个属性:

代码语言:txt
复制
interactive_timeout = 2880000
wait_timeout = 2880000

添加参数后的my.cnf文件内容
添加参数后的my.cnf文件内容

这两个属性的含义和windows系统相同,在此不做赘述;

修改完属性保存后,以后mysql的空闲自动关闭时长延长到800小时,基本上保证了访问项目能正常查询到数据的情况;

除非你的项目用的人实在太少,那就继续延长自动关闭的时间;

反正我直接设置成了8000小时哈哈哈(虽然也只是我自己用来做练习的项目)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、查看错误原因
  • 二、问题出自mysql而不是服务器
  • 三、解决方案
    • 1、在windows系统中
    • 2、在Linux系统中
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档