(点击即可进入聊天助手)
很多站长在运营网站的过程当中都会遇到一个问题,就是网站突然无法打开,数据一直无法启动
无论是强制重启还是,删除网站内的所有应用,数据库一直无法启动
这个时候,就需要常见的运维手段了,需要对服务器后台各个资源,进行逐一排查
如果一看到磁盘容量拉满,也并不是网络带宽问题,盲目的去花钱升级硬盘容量,这是不可取的,也是个无底洞,找到具体的问题,给解决才是上上之策
解决Linux服务器上MySQL数据库无法启动的问题
- 查看数据库错误日志
go
sudo less /var/log/mysql/error.log
- 检查MySQL服务状态:
使用systemctl检查MySQL服务的状态,以确定是否有错误信息
go
sudo systemctl status mysql.service
- 检查配置文件
确保/etc/my.cnf或/etc/mysql/my.cnf(路径可能因发行版而异)配置文件中没有错误
- 检查磁盘空间(很多时候就是这个原因)
确保服务器上有足够的磁盘空间,先使用df -h 查看磁盘容量,然后再使用du -sh * ,查看文件大小,找到文件异常大的,然后使用rm -rf 文件名,删除掉腾出资源空间
go
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
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
- 查看系统日志:
查看系统日志,如/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版本,因网站程序而异,不可千篇一律,得适配程序的,不可胡乱安装的,否则会导致一些奇怪的问题,严重会影响业务
<>
富爸爸情商课
<>
<>
理解人性
<>
<>
金钱的艺术
<>
点击左下角查看更多