Featured Image

最近由于各种原因,新网站服务器数据库总出问题,终于解决了CentOS 7服务器下的MariaDB数据库崩溃问题

自从做了全职境外自由职业,自己运营服务器在国外的网站时,经常发生数据库连接崩溃问题,至于超载还是连接数等等,已经解决了。最近又出现了因为偶然问题,造成的数据库崩溃。很头疼,之前遇到了,以为解决了最大连接数等问题就可以解决了,但是不然,还是发生了!发呆

最后还是得感谢Google,没有它,估计也一直解决不了。当然之前也是问了CSDN等社区,也没解决。我的服务器是CentOS 7,数据库是MariaDB,MYSQL经常出现意外的崩溃,总是要手动重启服务器或者重启数据库来解决,很是头疼。万一自己出门有个时间没看网站怎么办,岂不是要丢生意了。

无奈之下,疯狂的google, Stack Overflow等等,试了很多方法,终于搞定了,让数据库崩溃的时候快速自动重启就可以恢复。关于MariaDB的官方资料,可以参考https://mariadb.com/kb/en/mariadb/starting-and-stopping-mariadb/

终于松了一口气啦,大笑平时又要画界面又要搞开发还要维护服务器等等,真是有点头大啊,不过嘛,由于生活所迫,也不可能啥都求人,靠别人不如靠自己,所以各种折腾,也学会了架设和维护自己的linux服务器。下面说说解决办法吧,遇到有类似问题的童鞋,也可以参考下。

有些代码是简写了,有一点linux命令基础的可以看懂,步骤大概就是这样的。#是注释,大家都懂的,剩下的就是命令了,命令我用红色标注。


#首先确保此文件存在 /etc/systemd/system/multi-user.target.wants/mariadb.service

vi /etc/systemd/system/multi-user.target.wants/mariadb.service

 

#在[Service]下面加入以下行

Restart=always

#保存退出

:wq

  

#重新加载系统守护程序

sudo systemctl daemon-reload

sudo systemctl restart mariadb.service

 

#重启服务器,稍等十几秒后恢复

sudo reboot  

  

#模拟数据库崩溃的效果,查找进程看到类似ID后可以kill掉

ps -ef | grep mysql

 

#强制终止进程(如果/etc/systemd/system/multi-user.target.wants/mariadb.service文件修改成功,择数据库被kill后,会立刻重启恢复)

 #这里的ID要根据自己的服务器查看

sudo kill -9 2550

sudo kill -9 1590


 你可以看到当你kill了进程后,数据库重启了,ID变动了,如下图所示:



#有些服务器只要经过上面的步骤就可以解决自动重启恢复的问题了,如果怕存在其它的数据库服务器重启问题,可以继续执行下面的步骤,避免后患:

这样就可以模拟出可能遇见的问题(也就是我网站发生数据库崩溃,无法连接的一些遇到过的错误信息):

  1. Errorestablishing a database connection
  2. Warning:mysqli_real_connect(): (HY000/2002): Connection refused in
  3. Deprecated:mysql_connect(): The mysql extension is deprecated and will be removed in thefuture: use mysqli or PDO instead in …
  4. Warning:mysql_connect(): Connection refused…

 

 

#让崩溃后的数据库服务器自动重启,需要配置/etc/inittab文件,首先备份一个,编辑此文件一定要非常小心

sudo cp /etc/inittab /etc/inittab.orig

vi /etc/inittab

 

#结尾处增加一行,在/ etc / inittab文件中放置一个命令,以在mysqld_safe进程崩溃时重新生成mysqld_safe进程。 它有四个字段,每个字段与冒号(:)分隔开

ms:2345:respawn:/bin/sh /usr/bin/mysqld_safe

:wq

 

#保存后重启服务

systemctl restart mariadb.service

 

#重启服务器,稍等十几秒后恢复

sudo reboot  

 

#查看服务状态

sudo service mariadb status


OK,结束了,就这么多,自己总算是松了一口气啦,要不然随时都要盯着网站,一直担心由于各种原因造成数据库崩溃无法连接网站的问题,多头疼。哈哈,总算是有收获,又学会了新技能。以至于如何配置服务器,如何做一些最初的优化调整设置,如何安装SSL证书等等,也是经过了自己不少的摸索学习的,全部一一解决啦。奖励自己,吃点东西看场电影,休息啦。新网站也不放出来了,因为业务等等全是境外的,和自己这个中文博客啥的一点关系没有,这个只是记录自己的生活学习工作咯,用中文的方式。好了,如果大家看了我这些原创文章对自己有帮助,也可以经常关注我的博客,我一直在写博客,虽然写的不多,大多都是自己想自己总结学习出来的成果,是一个沉淀。



本文出自没位道|Chuckie Chang中文博客,转载请保留出处,谢谢!


CentOS Linux MariaDB 数据库 

分享按钮
image