某天一个开发在网上找我说他的应用连不上数据库了。我问他什么现象,他反馈说tomcat那里显示报错,无法连接数据库(这是翻译成中文的)原文不贴了。
我当时第一反应是去验证一下,让其他人去连一下数据库。让开发去telnet一下数据库。
结果是开发说telnet不通,其他人说数据库可以连接。
见鬼啊,这个应用看IP和数据库是同网段,不应该有防火墙的限制。但是的的确确不通。
那数据库这里有人反馈可以连接,还是我自己去看看吧。看看运行状态。如下图:
图片
看上去数据库没有启动。有点奇怪。那么我们重启一下数据库,先解决问题再说。即使是正式环境也是这样。重启命令过后还是这样。
开发反映不通,运维反应数据库可以连接。
不得不说有点没方向,看了一下服务器运行了快1000天,难道说Linux的问题?不过我见过十几年没重启的也能用。
艰难的建议他决定重启服务器吧。先试试。服务器马上启动好了。
ps 一下数据库进程。这次彻底凉了,连上图的失败信息都没有了。毕竟正式环境,瞬间压力来了。毕竟这个是我建议他做的。
看看配置文件吧,难道说找不到数据目录,数据库应该是和操作系统的后台一起启动的。没启动一定是什么配置失败了。
find / -name my.cnf 结果是没有。惊呆了,不管是什么版本,不管是什么路径这个参数名字是一定的。我全盘都没找到,难怪起不来了。这就是问题,数据库的参数文件没有了,为什么?怎么办?这种也是第一次遇到。安静几秒,在默认路径再找找,看看有什么发现。
这次让他们找到了一个my.cnf.rpmsave,眼前一亮。从名字看是RPM+SAVE作为后缀。这个我知道,一般是在一个已经有数据库服务器上再次rpm安装这样之前的配置文件就被改成这个了。但是一般这样的情况下,会有一个 my.cnf。现在奇怪的是没有。既然知道这个了,那我先改名字,保证能重启。
一切意料之中,一次启动成功,运维表示可能连接使用。开发这个时候也查到了,就是网络问题。他用另外一个应用服务器telnet数据库端口可以,他原来的应用服务器telnet数据库端口不行。
故障解决了,问题也知道了。也不知道是谁当年留的坑,只是这个机器一直没重启,一旦重启就是问题。而谁在运行过程中又安装了一次数据库,而且参数文件不见了,就不得而知了。




