mysql通过.frm和.ibd 文件恢复数据库

这篇具有很好参考价值的文章主要介绍了mysql通过.frm和.ibd 文件恢复数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 问题背景:由于强制在服务关闭mysql导致部分数据表以及数据丢失 如下图只有.frm .ibd的文件为我的问题文件 查找不到表结构和表数据目录D:XXXX\mysql-5.7.24-winx64\data\mydata

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

 从frm文件中恢复表结构

先把原来的数据备份一次 避免过程中出错

  • 先备份之前数据的.frm 和.ibd文件,并创建与之前名称相同的数据库
show variables like 'datadir'; //查看data路径
create database mydata; //创建数据库

eg: 

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

  • 进入数据库,并创建名称相同的表,由于不知道表结构,先创建1列
use mydata; //使用刚刚创建的数据库
create table mydata (id int); //创建和丢失的表一样的表

eg.

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

  • 替换文件

将现在的xxxx.frm文件替换为之前拷贝的文件里面名为xxxx.frm的文件

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

  •  重启服务器 推荐使用命令关闭

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

  • 查看表结构 (这时候会抛出一个错误)
 desc f_comments;//查看表结构

    eg.

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

          我们查看错误日志会看到这么一句
       
位置:

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

        抛错信息:
mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

        显示f_comments原表有9列

  •  删除表f_comments,并创建9列表结构
drop table f_comments;
create table info (id int,id2 int,id3 int,id4 int,id5 int,id6 int,id7 int,id8 int,id9 int);

eg.

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

 mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

  •  重新拷贝,用备份f_comments.frm文件代替mysql data目录下的f_comments.frm文件
     
  • 修改mysql配置文件my.conf中的参数,重启服务器

位置:

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

       eg:
        mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql
然后重启服务器 

进入数据库,查看表结构,并记录创建表结构的语句。
 

 show create table f_comments;

eg.创建表语句继续往下滑 

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql
mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

这样表结构就算恢复了 

从ibd文件中恢复表数据  

  • 将my.conf中的参数innodb_force_recovery=6注释掉,恢复默认参数,重启mysql服务
  • 删除f_comments表,复制上面的创建表结构语句,重新创建f_comments表
drop table f_comments;
 CREATE TABLE `f_comments` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `time` varchar(255) DEFAULT NULL,
  `hospital_num` varchar(255) DEFAULT NULL,
  `shu_name` varchar(255) DEFAULT NULL,
  `manager` varchar(255) DEFAULT NULL,
  `project` varchar(255) DEFAULT NULL,
  `zhu_name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

eg.
 

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

  • 删除当前的ibd文件
alter table f_comments discard tablespace; //删除f_comments.ibd文件

eg

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

  • 替换idb文件
  • 加载idb文件
alter table f_comments import tablespace;

eg

mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

 

完成:
mysql通过.frm和.ibd 文件恢复数据库,数据库,mysql

 参考:.frm和.ibd 文件恢复数据库_frm ibd 恢复数据_u010009053的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-687836.html

 

到了这里,关于mysql通过.frm和.ibd 文件恢复数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql数据库备份和恢复

    数据备份可以分为三种, 热备份。 数据库处于运行状态,此时依赖数据库的日志文件进行备份 温备份。 进行数据备份时数据库服务正常进行,但是数据智能度不能写。 冷备份。数据库处于关闭状态,能够够好的保证数据库的完整性。 逻辑备份。使用软件从数据库中提取数

    2024年02月12日
    浏览(67)
  • MySQL数据库备份与恢复

    在项目的开发过程中数据库的备份是非常重要的,为了防止数据库受到破坏,造成不可估量的损失,所以一定要进行数据库的备份,并且需要掌握数据库恢复方法,在发生数据库损坏的时候,能快速进行数据库恢复。 本文主要介绍MySQL数据表备份与恢复主要的三种方法,包括

    2024年02月12日
    浏览(169)
  • 9-MySQL数据库 数据的备份与恢复

    1.date文件的备份 2.mysqldump 备份 说明: mysqldump是MySQL数据库中的一个实用程序,它主要用于转储(备份)数据库。mysqldump通过生成一个SQL脚本文件,包含从头开始重新创建数据库所必需的(如 CREATE TABLE和INSERT等),来实现数据库的备份和转储。这样,你可以在任何时候通过运

    2024年02月08日
    浏览(71)
  • 数据库(MySQL的备份和恢复)

    目录 1.1 MySQL 日志管理 1.1.1 MySQL日志类型 1.1.2 错误日志 错误日志中主要记录的几种日志 错误日志的定义 1.1.3 通用查询日志 1.1.4 慢查询日志 和慢查询相关的变量设置 1.1.5 二进制日志 二进制日志是记录执行的语句还是执行后的数据 日志滚动  1.2 MySQL备份 1.2.1 备份类型 1.2.2

    2024年01月25日
    浏览(64)
  • Mysql数据库增量备份与恢复

    使用 mysqldump 进行完全备份,备份的数据中有重复数据,备份时间与恢复时间长。 而增量备份就是备份自上一次备份之后增加或改变的文件或内容。 1、增量备份的特点: 没有重复数据,备份量不大,时间短 恢复麻烦:需要上次完全备份及完全备份之后所有的增量备份才能恢复

    2024年02月07日
    浏览(91)
  • MySQL数据库的备份与恢复

    备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误 人为操作错误 运算错误 磁盘故障 灾难(如火灾、地震)和盗窃 1)物理备份 物理备份:对数据库操作系统的物理文件(如数据

    2024年02月04日
    浏览(242)
  • 【数据库四】MySQL备份与恢复

    数据库备份 物理备份 :直接对数据库的 数据文件或者日志文件 进行备份. 逻辑备份 :对 数据库的库或表对象 进行备份. 备份策略 完全备份 :每次备份 都备份完整的数据库 . 是对整个数据库、数据库结构和文件结构的备份。 保存的是 备份完成时刻的数据库 。 是 差异备份与增

    2024年02月11日
    浏览(63)
  • 数据库应用:MySQL备份与恢复

    目录 一、理论 1.数据备份 2.完全备份与恢复 3.完全备份与恢复应用 4.增量备份与恢复 5.增量备份与恢复应用 6.使用脚本备份 7.日志管理 二、实验 1.完全备份与恢复 2.增量备份与恢复 3.使用脚本备份 三、问题 1.mysqldump报错 四、总结 (1)重要性 ①  备份的主要目的是灾难恢复

    2024年02月16日
    浏览(72)
  • MySQL数据库误删恢复

           经常听说删库跑路这真的不只是一句玩笑话,若不小心删除了数据库,事情很严重。你一个不小心可能会给公司删没。建议研发不要直连生成环境,一般的话都会分配账号权限,生产环境的账号尽量是只读,以防你一个不经意给库或表删除。一定要备份,这很重要,

    2024年02月08日
    浏览(61)
  • MySQL基础(三十八)数据库备份与恢复

    物理备份 :备份数据文件,转储数据库物理文件到某一目录。物理备份恢复速度比较快,但占用空间比较大,MySQL中可以用 xtrabackup 工具来进行物理备份。 逻辑备份 :对数据库对象利用工具进行导出工作,汇总入备份文件内。逻辑备份恢复速度慢,但占用空间小,更灵活。

    2024年02月06日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包