针对服务器磁盘爆满,MySql数据库始终无法启动,怎么解决

(点击即可进入聊天助手)

很多站长在运营网站的过程当中都会遇到一个问题,就是网站突然无法打开,数据一直无法启动

无论是强制重启还是,删除网站内的所有应用,数据库一直无法启动

这个时候,就需要常见的运维手段了,需要对服务器后台各个资源,进行逐一排查

如果一看到磁盘容量拉满,也并不是网络带宽问题,盲目的去花钱升级硬盘容量,这是不可取的,也是个无底洞,找到具体的问题,给解决才是上上之策

解决Linux服务器上MySQL数据库无法启动的问题

  1. 查看数据库错误日志
go 复制代码
sudo less /var/log/mysql/error.log
  1. 检查MySQL服务状态:

使用systemctl检查MySQL服务的状态,以确定是否有错误信息

go 复制代码
sudo systemctl status mysql.service
  1. 检查配置文件

确保/etc/my.cnf或/etc/mysql/my.cnf(路径可能因发行版而异)配置文件中没有错误

  1. 检查磁盘空间(很多时候就是这个原因)

确保服务器上有足够的磁盘空间,先使用df -h 查看磁盘容量,然后再使用du -sh * ,查看文件大小,找到文件异常大的,然后使用rm -rf 文件名,删除掉腾出资源空间

go 复制代码
df -h
  1. 检查权限问题:

确保MySQL相关目录和文件的权限设置正确。

  1. 检查端口占用:

确保MySQL默认端口3306没有被其他进程占用

go 复制代码
sudo netstat -tulnp | grep 3306
  1. 尝试安全模式启动:

如果常规启动失败,可以尝试以安全模式启动MySQL

go 复制代码
sudo mysqld_safe &
  1. 修复安装:

如果怀疑数据库损坏,可以尝试使用MySQL的修复工具

go 复制代码
sudo mysql_upgrade -u root -p
  1. 重新配置/初始化:

如果以上方法都不能解决问题,可能需要重新配置或初始化数据库

go 复制代码
sudo mysqld --initialize
sudo systemctl start mysql.service

linux服务器MySql数据库始终无法启动 解决Linux服务器上MySQL数据库无法启动的问题,通常需要检查以下几个方面:

查看错误日志:

使用grep命令查看MySQL的错误日志,通常位于/var/log/mysql/error.log。

go 复制代码
sudo grep 'temporary' /var/log/mysql/error.log

检查MySQL服务状态:

使用systemctl检查MySQL服务的状态,以确定是否有错误信息。

go 复制代码
sudo systemctl status mysql.service

检查配置文件:

确保/etc/my.cnf或/etc/mysql/my.cnf(路径可能因发行版而异)配置文件中没有错误。

检查磁盘空间:

确保服务器上有足够的磁盘空间。

df -h

检查权限问题:

确保MySQL相关目录和文件的权限设置正确。

检查端口占用:

确保MySQL默认端口3306没有被其他进程占用。

go 复制代码
sudo netstat -tulnp | grep 3306

尝试安全模式启动:

如果常规启动失败,可以尝试以安全模式启动MySQL。

go 复制代码
sudo mysqld_safe &

修复安装:

如果怀疑数据库损坏,可以尝试使用MySQL的修复工具。

go 复制代码
sudo mysql_upgrade -u root -p

重新配置/初始化:

如果以上方法都不能解决问题,可能需要重新配置或初始化数据库。

go 复制代码
sudo mysqld --initialize sudo systemctl start mysql.service
  1. 查看系统日志:

查看系统日志,如/var/log/syslog或使用journalctl,以获取可能导致MySQL启动失败的更多信息。

go 复制代码
sudo journalctl -u mysql.service

下面介绍一个,磁盘空间爆满,即使删除服务器内的所有应用,数据库依旧无法启动

进入服务器根目录查看磁盘容量

远程登陆服务器,进入服务器根目录

go 复制代码
cd /

使用df -h, 命令查看服务器下资源各个磁盘的容量情况

如果你发现某个文件目录下,占用磁盘空间特别大,那就是这个磁盘该清理了的

go 复制代码
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           593M  972K  592M   1% /run
/dev/vda2       118G   117G   99G  98% /
tmpfs           2.9G  8.0K  2.9G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           593M  4.0K  593M   1% /run/user/0

此刻,说明/dev/vda2的资源已经满了,导致数据库无法启动的根本原因就在这里

所以需要删除一些占用硬盘资源大的东西

使用"du -sh *"查看当前目录下每一个的目录和文件的大小汇总

go 复制代码
0       bin
242M    boot
8.0K    dev
21M     etc
184M    home
0       lib
0       lib32
0       lib64
0       libx32
16K     lost+found
4.0K    media
4.0K    mnt
4.0K    opt
8.0K    patch
du: cannot access 'proc/25809/task/25809/fd/4': No such file or directory
du: cannot access 'proc/25809/task/25809/fdinfo/4': No such file or directory
du: cannot access 'proc/25809/fd/3': No such file or directory
du: cannot access 'proc/25809/fdinfo/3': No such file or directory
0       proc
30M     root
976K    run
0       sbin
1.3G    snap
4.0K    srv
0       sys
1.3M    tmp
3.9G    usr
5.1G    var
4.1G    www

然后你看哪个文件占用内存特别大,然后就进入哪个目录去删掉的

一般来说,几个G的,不算太大,但是某个目录文件超过硬盘的90%,那这个目录肯定需要腾出资源来

比如:我的是,www这个目录,之前是占用了110多个G,这个目录主要是存放服务器一些资源的

进入哪个目录,就用du -sh *,这个命令查看各个文件的大小

进入/www/server/,发现是php某个版本占用硬盘资源非常大,发现php版本,70占用硬盘空间达到100多个G,把它删掉就可以了的

使用命令rm -rf 70,删除,然后重启服务器就可以了的

你只要看哪个目录占用空间非常大,继续使用cd命令进入相应的目录,继续使用du命令进行查看,然后删除一下没用的文件,或者把它挂载到其他分区

总结

服务器内,不要随意的去安装各种php版本,它是非常占用磁盘空间的 ,有些应用程序非常吃硬盘,网站每运行一分钟,不仅会产生日志,缓存,还有可能会产生一些其他的文件,时间一久就会影响磁盘,如果积累到一定程度,就会影响服务器的运行速度

选择合适的php版本,因网站程序而异,不可千篇一律,得适配程序的,不可胡乱安装的,否则会导致一些奇怪的问题,严重会影响业务

<>

富爸爸情商课
<>

2025-01-10

<>

理解人性
<>

2025-01-09

<>

金钱的艺术
<>

2025-01-08

点击左下角查看更多

相关推荐
麦聪聊数据1 小时前
Web 原生架构如何重塑企业级数据库协作流?
数据库·sql·低代码·架构
未来之窗软件服务1 小时前
数据库优化提速(四)新加坡房产系统开发数据库表结构—仙盟创梦IDE
数据库·数据库优化·计算机软考
Fcy6481 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满1 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠2 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
主机哥哥2 小时前
阿里云OpenClaw部署全攻略,五种方案助你快速部署!
服务器·阿里云·负载均衡
Harvey9032 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
Goat恶霸詹姆斯2 小时前
mysql常用语句
数据库·mysql·oracle
大模型玩家七七3 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
曾经的三心草3 小时前
redis-9-哨兵
数据库·redis·bootstrap