数据库崩了!技术跑路了!!!

257 阅读2分钟

这是一篇处理数据库异常崩溃的解决思路。事情的原因是技术写了一段代码,传到了服务器,通过接口请求一下,服务器负载一下子跑满了,任何请求都不影响,远程ssh无法登录,技术竟然写了一个死循环的代码。没过一会,客户开始打电话,说小程序无法打开。
  第一时间,登录阿里云平台,强制重启服务器,时间一分一秒过去,技术站在我旁边,不敢说话,知道自己捅了大麻烦。这个时候作为技术负责人,千万不要乱发脾气。过了一会服务器正常启动了,马上通过ssh登录,因为在服务器里面web服务器通过docker启动的,马上启动docker,通过链接访问网站,发现可以打开了,但是无法没有数据,第一时间想到,肯定是数据库出了问题。因数据库并不是通过docker启动了,而且直接安装在服务器里面,通过mysql命令去连接发现无法连接。然后尝试重新启动mysql服务,一直报错,提示"Can't find error-message file '/usr/share/mysql/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive"错误,在 /usr/local/mysql/share 里面找到了对应文件复制到/usr/share/mysql下面,无法还是提示错误。
  此时,离服务器崩溃过了1个小时了,我和客户一直通着微信语音,对方一直在接客户的反馈,说无法退钱,无法使用程序。发现无法启动Mysql,也找不到更好的解决方案,马上通过cp -r命令将数据库进行备份。卸载原来的Mysql安装,通过docker拉取新的mysql,启动mysql服务器,此时服务可以启动,并将新的Mysql的datadir配置指向原来的数据data目录,重新启动服务器,通过命令连接一切正常,危机算是接触了。
  数据库崩溃这是经历过好几次,总结下来,第一时间进行data备份,而且不要乱操作,很可能导致更严重的问题。如果,发现原来的表确实,可以尝试利用mysql日志进行恢复或者通过备份文件恢复,平时在管理数据库的时候一定要记得备份,关键时刻救命。