MySQL数据库自动停止的 四个解决方法 - 技术分享 - 五行资源分享网

MySQL数据库自动停止的 四个解决方法

作者头像图片

作者: 五行

网络资源搬砖的爱好者。

文章二维码手机扫码查看

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,如有侵权请联系!

MySQL数据库是一种开源的关系型数据库管理系统。它由瑞典MySQL AB公司开发,并于2008年被Oracle收购。MySQL数据库广泛用于web应用程序的开发,特别是在与PHP语言配合使用的LAMP(Linux、Apache、MySQL和PHP)环境中。。

 

本站五行资源博客在运营过程中,用宝塔面板运维云服务器的时候,有用户反馈会遇到出现“Error establishing a database connection”数据库连接错误,导致网站无法正常访问的情况。这种错误主要出现在腾讯云等一些轻量型服务器上,因为某些原因(比如:恶意攻击、服务器配置较低等)导致某个时间节点出现了内存不足或者CPU占用100%,服务器负载过高而导致MySQL数据库服务意外停止。在我经过耐心排查,发现其服务器环境中的 MySQL 服务居然无故自动关闭,停止运行了。可以在宝塔面板的【 软件商店 – 已安装 】的应用分类列表中查看 MySQL 运行状态,

 

如下图所示:

MySQL数据库自动停止的 四个解决方法-五行资源分享网-第1张图片

宝塔MYSQL服务自动关闭停止

解决方法 1:手动重启 MySQL 服务

直接在宝塔面板的【 软件商店 – 已安装 】的应用分类列表中找到 MySQL 软件,点击右侧对应的 设置 项,在弹出操作窗口中,点击 启动 ,重新打开 MySQL 服务,如下图所示:

 

MySQL数据库自动停止的 四个解决方法-五行资源分享网-第2张图片

启动 MySQL 服务

 

但是,这种方法治标不治本,无法保证后面不再出现 MySQL 服务自动停止的问题。

 

解决方法 2:安装宝塔面板里的 Linux工具箱

 

在宝塔面板的【 应用商店 】中搜索“Linux工具箱”,点击 安装 按钮,如下图所示:

 

MySQL数据库自动停止的 四个解决方法-五行资源分享网-第3张图片

宝塔面板安装 Linux 工具箱

安装好 Linux工具箱 后,在 Linux工具箱 的弹窗设置中,找到 Swap/虚拟内存 设置项,根据使用的服务器配置来进行虚拟内存的设置,如下图所示:

 

MySQL数据库自动停止的 四个解决方法-五行资源分享网-第4张图片
Linux工具箱 中设置 Swap 虚拟内存

不管网站使用的服务器内存多大,都建议添加 Swap。

  1. swap是Linux下的虚拟内存,设置适当的swap可增加服务器稳定性
  2. 建议swap容量在真实内存容量的1.5倍左右,若您的服务器内存大于4GB,可设1-2GB的固定值
  3. swap文件默认保存在/www/swap,设置前请确保磁盘空间够用
  4. 若您不需要swap,请将容量设为0
  5. OVZ虚拟架构机器不可用此功能

 

Swap/虚拟内存 推荐值:

  1. 2G 和 2G 以下内存的服务器,建议设置成和物理内存相同容量的 SWAP
  2. 2G 以上的内存的服务器,建议设置为 2G。如果网站程序特别耗内存,2G 内存以上的 Swap 也可以设置与内存相同容量

 

解决方法 3:安装 PHP 缓存加速扩展

 

出现“MySQL 服务自动关闭”问题的一大原因就是服务器过载,所以,可以优化服务器中的 PHP 和缓存环境来优化配置,从而,增加服务器的稳定性。

 

在宝塔面板的【 软件商店 – 已安装 】的应用分类列表中找到当前网站运行使用的 PHP 版本,点击右侧对应的 设置 项,在弹出操作窗口中,切换到 安装扩展,在扩展列表中找到 opcache 和 memcached 与 redis并安装,其中memcached与redis(二选一)即可,如下图所示:

 

MySQL数据库自动停止的 四个解决方法-五行资源分享网-第5张图片

安装 PHP Opcache redis 缓存加速扩展

 

安装好 opcache 和 memcached 或者 redis 之后,可以明显地提升服务器运行效率,很大程度上降低服务器的负载,减少 CPU 和 内存的占用。

 

如果以上方法执行后,效果都不够理想,那很可能就是你当前使用的服务器配置过低了,建议升级服务器配置,主要是CPU和内存。

 

解决方法 4:添加 MySQL 服务自动重启的 Shell 脚本

 

在宝塔面板中的计划任务中,添加 MySQL 数据库自动重启的 shell 脚本,定时自动重启运行中的 MySQL 数据库,缓减 MySQL 数据库的压力。

 
pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ];then
bash /www/server/panel/script/rememory.sh
/etc/init.d/mysqld start
fi
 
 

把上面的 Shell 脚本,添加到下图位置:

 

MySQL数据库自动停止的 四个解决方法-五行资源分享网-第6张图片

MySQL 自动重启的 Shell 脚本

MySQL进程守护的执行周期不建议设置的过小,可以是1小时30分钟;如果该脚本的执行周期时间设置的过短,当你在网站后台更新发布文章或者升级网站程序时,可能会造成不必要的错误!

 

如果 MySQL 数据库已经停止,通过添加下面的 shell 脚本自动检测 MySQL 数据库是否为停止状态,如果检测到 MySQL 数据库停止,则自动重启。相关 shell 脚本代码如下:

#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH pgrep -x mysqld /dev/null if [ $? -ne 0 ] echo At time:$(date) :MySQL is stop . /var/log/mysql_messages service mysqld start fi
 

把上面的 Shell 脚本,添加到下图位置:

MySQL数据库自动停止的 四个解决方法-五行资源分享网-第7张图片

MySQL 停止状态 自动重启的 Shell 脚本 
分享到:
打赏
未经允许不得转载:

作者: 五行, 转载或复制请以 超链接形式 并注明出处 五行资源分享网
原文地址: 《MySQL数据库自动停止的 四个解决方法》 发布于2024-11-20 22:35
帖子声明: 本站对文章进行整理、排版、编辑,是出于传递信息之目的, 并不意味着赞同其观点或证实其内容的真实性,不拥有所有权,不承担相关法律责任。

评论

在线链接输入图片 打卡按钮图片 私密评论按钮图片 84 + 53 =
乱评论、多次评论者一律禁言帐号或封禁IP
本站已经全面开启缓存,评论查看隐藏内容需等待1分钟后再刷新本页!
  1. 1楼
    用户头像图片
    五行 站长已认证
    IP地址:在火星搬砖

    测试11


 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

打赏图片