自从CentOS 7 停止维护以来,Eswink就没有怎么管过它,没有想到现在连yum正常的更新都不行了,那怕是变更源为阿里云的CentOS源也是问题不少,最后连正常安装RPM包都频繁报错了,这时候Eswink才意识到是时候变更服务器镜像系统的时候了,没有想到在恢复自己服务器的时候遇到了一波惊魂时刻,思来想去感觉还是有必要记录下来。

事件经过

事情是这样的,因为Eswink自用的服务器配置很低,这么多年来都是1H1G的配置一路走来的,因为内存1G所以一直用的都是MariaDB/MySQL低版本的数据库,为了保险起见采用OSSFS实现了每天自动云备份,理论上都是没有问题的,但这次在变更镜像系统后恢复数据库导入SQL文件的时候都无法正常完成了,都是提示“外键约束”开启造成的数据库链接失败,网上查了半天模糊明白造成这个原因是到处SQL的是没有关闭“外键约束”选项造成的,TNND,备份导出的时候不提示,导入的时候提示这是什么逻辑?脑残嘛!

这时候源数据已经被重置清理掉了,服务器的镜像备份也因为考虑成本问题给关闭掉了,可以说已经是回不去了,备份的SQL文件只有OSS上独一份儿,甚至都开始考虑在phpMyAdmin里一句一句SQL语句来恢复数据库,很明显这不科学,万般惆怅下突然想起来phpMyAdmin里不行,为啥不能直接在数据库里导入SQL恢复备份呢?以前给用户恢复超过1G的SQL文件时就用过的。马上清除失败数据库的恢复内容,具体操作如下:

mysql -uroot -ppassword 使用数据库root账号和密码运行MySQL
use test 打开叫test的数据库
source /home/test.sql 导入/home/test.sql文件到数据库test里

这时候发现还是有几个错误提示,但导入过程没有出现中断,也就是说数据都已经恢复回来了,出的错误提示一般都是文件末尾字符问题,尝试连接数据库运行网站恢复如初,虚惊一场!

总结

经过这次惊魂时刻让Eswink意识到导出SQL很多时候也是个很大的隐患,为了保险期间最好是手动在phpMyAdmin里导出SQL也备份一次,这样双备份下来才更有保障,当然在服务器重置前先来个镜像备份才是最保险的!