mysql st启动失败日志_511数据库无法启动故障

数据库mysq服务无法启动

临时解决办法:

经人提醒用mysqld_safe方式直接启动(自打脸1024次)

事件回顾

赞到爆活动粉丝猛增导致数据库主机CPU满载,系统卡顿

解决过程

将数据库关闭,操作命令:systemctl stop  mysqld

将数据库重启一次检验是否可正常重启 systemctl start  mysqld可正常启动

将数据库关闭

在阿里云控制台将数据库主机扩容至16C/32G高性能计算型ECS

登陆数据库主机systemctl start  mysqld无法启动,日志报错如下

mysql报错信息

被上图中的第8行日志

key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 127390 K  bytes of memory

Hope that's ok; if not, decrease some variables in the equation.

所迷惑,我们一直在修改上面的几个参数,但是数据库仍然无法启动

根据原因探索

检查/etc/init.d/mysqld系统启动脚本,其中有一段代码是判断PID文件是否存在,如果/etc/my.cnf文件里无配置就会用/var/run/mysqld/mysqld.pid默认配置文件

代码如下

mysqld启动脚本

检查/var/run下并无此文件,因为主机重启后系统会自动将此文件删除

三种解决方案:

原理解析:/etc/init.d/mysqld原理其实就是调用mysqld_safe来启动数据库

方法一:给/etc/my.cnf添加配置让mysql到自己的数据目录下写/mydata/mysqld.pid

[mysqld_safe]

log-error=/mydata/mysqld.log

pid-file=/mydata/mysqld.pid

结果:systemctl start mysqld会一直卡在那,systemctl不正常结束返回,此时数据库是已经正常起来了,而操作系统命令systemctl找不到/var/run/mysqld/mysqld.pid而卡在那(失败)

方法二:更换启动方式,直接用mysqld_safe --defaults-file=/etc/my.cnf启动,此方法是默认到/mydata目录下创建mysqld.pid文件,但是关闭时用

mysqladmin  shutdown -uroot   -P6033 -p方式来关闭,还要输入密码较麻烦而且做开机启动也麻烦

方法三:修改/etc/init.d/mysqld启动脚本添加自动创建/var/run/mysqld文件夹

如果文件夹不存在就自动创建

主机重启可自动将数据库拉起。

总结

此次故障处理心得

心得

Icon

1:一直被mysql的报错迷惑不断调试各个buffer的size大小,

2:忘记了尝试用mysqld_safe来启动

3:从库没能在第一时间切换成主库,这个在接下来的时候进行方案设计和实施

4:业务逻辑没有实现读写分离从库一直空闲而主库却已经累死

5:慢查询超时未告警部署

6:直接导致丢失大量可能性粉丝

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值