• 记一次使用MySQL5.7数据库数据目录下的文件恢复数据到个人云主机(CentOS7)中MySQL5.7的过程


    一、背景

    个人笔记本电脑主板挂了拿去维修了,手头就一个固态盘。因项目需要,不得不还原数据库到个人云主机(CentOS)。由于没有数据库管理软件,所以只能使用固态盘中mysql的数据目录下的数据文件完成数据还原。

    二、操作过程

    1、备份目标主机mysql中的数据库!备份目标主机mysql中的数据库!备份目标主机mysql中的数据库!重要的事情说三遍,不管大佬多么牛,备份一下还是很有必要的!

    2、从固态盘中找到mysql数据目录,并将目录下所需数据库对应的文件夹及ibdata1文件一并拷贝至目标主机下mysql数据目录,可通过如下sql查询:

    show global variables like "%datadir%";

    由于ibdata1在目标主机的mysql数据目录下本来就有,所以在拷贝或者解压(如果是放在压缩包中搞进去的)的时候都会给个提示,如果在做了第一步备份的前提下,可以选择覆盖或者替换。

     需要注意的是,如果没有将ibdata1拷贝过去,在执行第4步,完成mysql重启后,进入还原后的数据库,打开表的时候会报如下错误:

    1146 - Table 'space.xxxx表' doesn't exist

    3、修改拷贝过来的文件的拥有者跟用户组

    1. chown -R mysql 数据库目录
    2. chgrp -R mysql 数据库目录
    3. chown -R mysql ibdata1文件
    4. chgrp -R mysql ibdata1文件

    此时,先去数据库连接工具中去看看,其他的数据库是否还能正常访问。如果还能访问,那么还能在此时备份数据。

    4、重启mysql

    systemctl restart mysqld

    5、使用数据库连接工具(本人使用的Navicat)连接数据库进行检查,此时被还原的数据库已经可以正常访问了。但是!!!其他的数据库访问的时候出现了以下报错:

    1. [Err] 1813 - Tablespace xxxx exists.
    2. [Err] Failed to create Table: xxxxv

    如果已经执行过备份操作,那么可以不用慌,可以按照第6步的操作方式进行处理。

    6、处理问题

    首先,去目标主机的mysql数据库数据目录下找到报错的数据库对应的目录,删除目录下所有的.idb文件。

    rm -rf ./*.idb

    其次,使用数据库备份文件还原对应的数据库。最后验证发现已经还原到之前的状态了!

    三、总结

    至此,本次通过mysql数据库文件还原数据库的过程就操作完成了。形成此文档的目的,一方面是为了便于后期遇到同样的问题时有个参考,另一方面也希望能够帮助的跟我遇到同样问题的小伙伴。以上操作是本人实操记录,如有不到位的地方,欢迎各位大佬批评指正!

  • 相关阅读:
    【Flask使用】全知识md文档,4大部分60页第3篇:状态cookie和session保持
    java构建树
    【docker - 安装】windows 10 专业版 安装docker,以及 WSL kernel version too low 解决方案
    大屏小程序探索实践 | Cube 技术解读
    vue-router4 |name的作用|query传参|parmas传参|动态路由参数|命名视图|别名alias|前置路由守卫|路由过渡效果|滚动行为
    代码随想录 Day37 完全背包理论基础 卡码网T52 LeetCode T518 零钱兑换II T377 组合总和IV
    【Python&GIS】基于Python批量合并矢量数据
    基于Python-django餐厅点餐及推荐系统
    nginx实现路由重定向功能 避免服务器出现 404 Not Found
    利用445 端口渗透
  • 原文地址:https://blog.csdn.net/weimeixiehou/article/details/124994833