mysql在收到大量请求为什么会宕机

mysql在收到大量请求为什么会宕机,第1张

1检查是否有备份,如果备份存在,binlog存在,那么万事大吉,一切都有挽回的余地,慢慢来搞,只要你基础扎实,数据还原只是时间的问题

2对于没有备份的,那处理这个问题就有些棘手了,还得一步一步的来。

在mycnf中[mysqld]下加上以下配置,采用强制恢复机制,看是否能够启动

[mysqld]

innodb_force_recovery=1

如果设置成1不能启动,可以逐渐的将数据增大到6,下文会详细说下1-6是什么意思,如果在1-6之间启动成功了,那么你运气还不错,这时候不要恢复业务,赶紧把数据用逻辑方式导出来,再启个新的实例把数据还原,有人会问,为什么mysql已经启动了,还要导出数据呢,原因在这:

当innodb_force_recovery被设置为大于0的时候 ,会阻止用户insert,update,delete也就是你启动的mysql不是一个正常的mysql服务,类似于windows系统下的安全模式。以下这段引于其它地方,具体地址不太清楚了,也可以从官方文档中找到。

1 查看宕机原因,确认是新建索引导致的宕机

2 检查新建索引的语句,查看是否存在语句错误或者不合理的参数

3 检查索引的表结构,查看是否存在数据类型不匹配的情况

4 检查系统参数,查看是否存在不合理的参数配置

5 检查系统资源,查看是否存在内存、硬盘空间不足的情况

6 如果以上检查无法解决问题,可以尝试重启数据库,查看是否能够恢复正常

造成服务器宕机(死机)的原因是什么呢?那么他解决方法有哪些呢?壹基比来告诉你

引发服务器宕机原因大概有:运行环境问题、服务器性能问题、服务器硬件问题、数据丢失或损坏问题。下面我们对以上几个问题详情描述并提供解决办法:

一、运行环境问题导致服务器宕机

服务器运行环境包括 *** 作系统,数据库,应用程序,应用程序bug,网络数据等,以上软件系统故障会引起服务器宕机现象。解决办法:需要我们查找分析系统、应用程序相关日志来找出真正的原因。一般都能发现问题,根据日志提供的错误信息修改相关设置来解决此类宕机故障,由于系统原因可以重装系统,或重启一下服务器就可以了。

二、服务器性能问题导致服务器宕机

服务器性能好坏也是引发宕机的一个因素,因为IDC提供商的服务器有些不是品牌服务器,是组装型的服务器,采购的硬件也不是品牌的,多用于杂牌硬件,难免会因硬件兼容性,CPU,内存等性能不好,导致宕机。解决办法:查看服务器硬件信息,在租用或选购时尽量用品牌服务器,品牌服务器在稳定性方面是没得说的。

三、服务器硬件问题导致服务器宕机

如服务器主板,电源,CPU,内存,磁盘有问题也会导致服务器宕机故障,解决办法:使用工具测试相关硬件配件,或更换配件测试服务器硬件问题。

四、数据丢失或损坏问题导致服务器宕机

数据丢失包括人为错删除数据,磁盘坏道导致数据丢失,磁盘写满等原因可导致服务器系统崩溃宕机,解决办法:做好数据备份,监控磁盘空间大小。

1、案例现象

在root用户下,su切换到一个普通用户oracle下,却发生了如下错误:

oracle数据库意外宕机的分析处理案例

于是,尝试直接通过oracle用户登录系统,发现此时的oracle用户也无法登录了,出现与上面同样的错误。

2、解决思路

从上面错误提示可知是权限出现了问题,那么可以从权限入手进行排查,基本思路如下:

用户目录/home/oracle权限问题;

su程序执行权限问题;

程序依赖的共享权限问题;

selinux问题导致;

系统根空间问题。

3、排查问题

根据上面的思路,我们进行逐一检查,考虑到su在切换到oracle用户时会读取oracle目录下的环境变量配置文件,因此,首先检查/home/oralce目录的权限是否存在问题,

[root@loaclhost home]# ls -al/home|grep oracle

drwx---- 4 oralce oinstall 4096 01-31 10:45 oracle

从输出可知,/home/oracle目录的属主是oracle用户,oracle用户对这个目录有“rwx”权限,因此,oracle用户目录的权限设置是正确的,可以排除掉这个问题了。

接着检查su执行权限问题:

[root@loaclhost home]# 11 /bin/su

-rwsr-xr-x 1 root root 24120 2007-11-30 /bin/su

可见su命令执行权限也没有问题,这个也排除了。

继续检查su依赖的共享库权限,使用ldd命令检查su命令依赖的共享库文件,如下图

oracle数据库意外宕机的分析处理案例

根据上面的 *** 作,依次检查su命令依赖的每个库文件的权限,发现也都是正常的,因此,共享库的问题也排除了。

根据上面的思路,绩效检查SELinux的设置。

oracle数据库意外宕机的分析处理案例

由输出可知,SELinux处于关闭状态,这个原因也排除了。

到这来为止,问题变得朴素迷离,到底是哪里出现问题了呢?作为Linux运维,例行检查系统根分区状态是非常必要的,那么首先检查一个根分区的磁盘空间大小,发现剩余空间还有很多,空间问题也排除了。既然报的错误是权限有问题,那么只要以权限为线索,不偏离这个核心就没错,于是继续尝试检查/home目录下各个用户的权限,如下图。

oracle数据库意外宕机的分析处理案例

从输出看每个用户的目录权限,都是“rwx----”,即“700”,完全没有问题,可是我发现我错了,我的目光一直在用户对应的目录上,而忽略了其他输出信息,而问题就藏在我没有关注的信息中。在这个命令输出的前两行中,第一行权限对应的目录是“”,代表当前目录,也就是/home目录,权限为“rwxr-xr-x”,第二行权限对应的目录是“”,也就是根目录,权限却为“rw-rw-rw-”,即“666”,此时,问题终于查找到了,原来是根目录权限问题。

4、解决问题

知道了问题产生的原因,解决问题就非常简单,执行如下命令:

[root@localhost~]#chmod 755 /

然后就可顺利执行su切换命令。

经验分享

这个问题主要是由于根目录没有执行权限,而Linux下所有的 *** 作都是在根目录下进行的,进而导致/home/oralce目录没有执行权限。其实根目录权限的丢失对于系统中运行的每个用户存在同样的影响。因此,在权限出现问题时,一定要注意根目录的权限。

以上就是关于mysql在收到大量请求为什么会宕机全部的内容,包括:mysql在收到大量请求为什么会宕机、新建索引导致宕机、服务器宕机了,应该怎么办等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9704311.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存