iMisty的技术栈

iMisty的技术栈

记一次服务器数据备份迁移的血与泪

1037
2019-07-06

记一次服务器数据备份迁移的血与泪

在九月二十八日的时候决定重新初始化一下服务器,说干就干起来,备份主要文件,数据库,应用程序,docker镜像,容器....,毕竟我知道以我的性格若是不做的话,大概下次就是很久之后了。
然后清除系统盘,更换新的系统,一顿操作行云流水,启动服务器,美滋滋,果然干净的系统就是舒服;之后安装必要软件,java,mysql,nginx,tomcat,docker,php,以及一些常用的工具包,安装好了之后,优先恢复博客系统,nginx服务器配置和站点恢复基本没有怎么花费时间,最后一步恢复数据库的时候遇到了几个问题,

  • 第一个是因为MySql8的用户密码加密问题,导致数据库连接配置正常的情况下死活连接不上去,后来在wp-config.php 打开调试配置然后页面出现了一个错误,顺藤摸瓜解决了这个问题;
  • 第二个就是血与泪了,这里用下面的漫长篇幅来记录这个问题;

如下图所示 右键数据库新建备份,来备份一下数据库
img

img

可以另存一下,保存为XX.nb3格式的备份文件(这个步骤不会有问题,但是还原简直是一个坑)
img

数据库还原

之前将数据库的数据完整备份了一下,待到服务器环境配置完成再还原数据;选中对应的XX.nb3文件还原
img
点击开始还原数据
img
居然还原报错了,感觉世界崩塌,我辛辛苦苦大半年维护的博客就这样没了? 于是开启瞎鼓捣模式
img

数据恢复

因为.nb3格式直接记事本打开是看不到sql语句的,只会显示一堆中文乱码;
还是使用navicat的工具从.nb3文件中提取sql语句,保存为 .sql文件,这样直接执行一下就重新生成了数据库(实际可能不会很顺利,sql会有一些语法问题,但是sql语句在手还怕数据丢失吗)
img
重新建立一个同编码utf8mb4的数据库,然后,将数据导入原数据库的对应数据表即可,

利用导入/导出向导(推荐使用sql格式)导出然后执行sql恢复数据
img

数据库备份恢复总结

  • 备份数据最好尝试还原一下(如果数据量不大的话),然后在存储备份文件
  • 其实推荐快照备份的,因为这样才能保证数据真正不会丢失,实际生产环境的数据结构复杂度以及博客的数据量大的多,不可同日而语,但是因为我的服务器被挖矿程序入侵,处理之后各项指标正常控制台还是会出现安全警告,但是博客访问很慢,估计是恶意程序嵌入了底层,解决不了,这就没有办法了