mysql 5.5 总是自动宕机 问题求助

mysql 5.5 总是自动宕机 问题求助,第1张

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

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

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

[mysqld]

innodb_force_recovery=1

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

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

docker 自带重启策略,restart有三个参数:no,on-failure,always

一般选择on-failure,也就是非正常宕机都重启,手动停止不重启。

1.no为默认值,表示容器退出时,docker不自动重启容器

2.on-failure表示,若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃:

3.always表示,只要容器退出,则docker将自动重启容器

mysql宕机主要有两个原因:

1.内存被其它进程大量占用,或数据库本身数据量太大导致mysql宕机

2.程序访问mysql后没有执行mysql.close,大量占用资源导致宕机。

群里提出的这个问题主要是mysql5.5以上的,基本上不是mysql宕机。因为5.5以上的数据库会有个链接超时配置。

默认是28800秒也就是8个小时,会断开连接。

解决方案:

1.修改mysql配置。

如果是linux服务器编辑mysql.cnf 执行vi /etc/mysql.cnf

找到[mysqld] 在底下添加

interactive_timeout=28800000

wait_timeout=28800000

多加了三个0 也就是8000个小时。基本就不用考虑连接超时

修改完配置后,记得重启mysql服务。

2.程序方面。

以java程序为例(抱歉只会java)

打开Spring配置文件,修改applicationContext.xml

在datasource bean底下添加

用来指定测试连接所使用的SQL语句。

如果测试发现连接已经close,那么将自动重建连接。

<property name="houseKeepingTestSql">

<value>SELECT 1</value>

</property>

用来指定在使用连接之前要进行测试。

<property name="testBeforeUse">

<value>true</value>

</property>


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

原文地址:https://54852.com/zaji/5904522.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存