mysql根据.frm和.ibd文件恢复数据表
忠人之事受人之托 起因是因为一位朋友的数据库服务器被重装了,只剩下一个zbp_post.frm和zbp_post.ibd文件。咨询我能不能恢复,确实我只用过mysqldump这种工具导出数据 然后进行恢复到数据库。这种直接备份物理存储文件还没有尝试过。
前提是需要历史ibd文件的所属数据库版本 需要和还原新库数据库版本保持一致,这样才能少踩坑。
创建表结构
要想恢复数据,表结构需要和.ibd里面的结构保持一致,如果不一致将恢复不成功 可能会报如下错误。或者其他异常。
[ERROR] InnoDB: Trying to access page number 426442752 in space 24, space name test1/zbp_post, which is outside the tablespace bounds. Byte offset 0, len 16384, i/o type read. If you get this error at mysqld startup, please check that your my.cnf matches the ibdata files that you have in the MySQL server.
获取表结构
如果明确知道表结构 这一步可跳过。不知道表结构可从这一步操作中获取到表结构。
借助了mysql utilities工具来查看表结构。
安装mysql utilities
这里我适用window 其他系统也是类似的操作 下载后安装好。
https://downloads.mysql.com/archives/get/p/30/file/mysql-utilities-1.6.5-winx64.msi
其他系统下载地址 https://downloads.mysql.com/archives/
进入zbp_post.frm目录中执行获取表结构命令。
cd zbp_post
mysqlfrm --diagnostic ./zbp_post.frm
执行完mysqlfrm命令后 输出如下表结构
CREATE TABLE `zbp_post` (
`log_ID` int(11) NOT NULL AUTO_INCREMENT,
`log_CateID` int(11) NOT NULL,
`log_AuthorID` int(11) NOT NULL,
`log_Tag` varchar(1000) NOT NULL,
`log_Status` tinyint(4) NOT NULL,
`log_Type` int(11) NOT NULL,
`log_Alias` varchar(1000) NOT NULL,
`log_IsTop` tinyint(4) NOT NULL,
`log_IsLock` tinyint(4) NOT NULL,
`log_Title` varchar(1000) NOT NULL,
`log_Intro` text,
`log_Content` longtext,
`log_CreateTime` int(11) NOT NULL,
`log_PostTime` int(11) NOT NULL,
`log_UpdateTime` int(11) NOT NULL,
`log_CommNums` int(11) NOT NULL,
`log_ViewNums` int(11) NOT NULL,
`log_Template` varchar(1000) NOT NULL,
`log_Meta` longtext,
`log_BdPush` int(11) NOT NULL,
PRIMARY KEY `PRIMARY` (`log_ID`),
KEY `zbp_log_TPISC` (`log_Type`,`log_PostTime`,`log_IsTop`,`log_Status`,`log_CateID`),
KEY `log_CateID` (`log_CateID`),
KEY `log_AuthorID` (`log_AuthorID`),
KEY `log_PostTime` (`log_PostTime`),
KEY `log_CommNums` (`log_CommNums`),
KEY `log_ViewNums` (`log_ViewNums`),
KEY `log_Title` (`log_Title`)
) ENGINE=InnoDB;
数据库配置修改
编辑MySQL的配置文件,通常是my.cnf或my.ini文件,在[mysqld]部分添加以下行:
这将确保每个表有单独的.ibd文件。
[mysqld]
innodb_file_per_table=1
wait_timeout=600 #600秒(10分钟)
wait_timeout=600 这个配置可以不加 访问还原数据比较大。执行超时的情况。需要根据场景酌情配置。
开始恢复数据
创建新数据库
创建一个数据库 任意数据库名。
create database test1;
创建表
进入到新创建的数据库中(use test1),复制上一步中的表结构SQL。执行创建表结构操作。
使用.ibd文件恢复数据到新表
卸载表空间 执行此步会自动删除新表对应的.ibd文件
ALTER TABLE zbp_post DISCARD TABLESPACE;
拷贝备份的.ibd文件到新创建数据库对应的目录中。
一般目录在mysql保存数据库的目录。如我当前的服务器mysql数据保存的目录在/usr/local/mysql/data,数据库名 test1 ,表名 zbp_post。
那么拷贝.ibd文件的目录为 /usr/local/mysql/data/zbp_post/test1中。
装载表空间
ALTER TABLE zbp_post IMPORT TABLESPACE;
完成以上步骤后,您应该能够成功还原.ibd文件。请注意,这种方法仅适用于InnoDB引擎的表。如果.ibd文件损坏或不匹配,可能需要使用MySQL的数据恢复工具来修复数据库。
验证
果然完美
mysql> select count(1) from zbp_post;
+----------+
| count(1) |
+----------+
| 785216 |
+----------+
1 row in set (0.15 sec)
如果有朋友遇到类似问题可以和我联系。
mysql根据.frm和.ibd文件恢复数据表的更多相关文章
- MYSQL数据库根据data文件中的.frm和ibd文件恢复单表数据
数据库误操作,把表的字段删除了,关键是被删除的字段的数据很重要,现在想要恢复数据,下面说说是怎么操作的. 数据库只剩.frm和.ibd文件了,按照网上的做法分如下两步来进行:一.找回表结构,二.找回数 ...
- 【MySQL】InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据
参考:http://my.oschina.net/sansom/blog/179116 参考:http://www.jb51.net/article/43282.htm 注意!此方法只适用于innod ...
- MySQL innodb引擎下根据.frm和.ibd文件恢复表结构和数据
记录通过.frm和.ibd文件恢复数据到本地 .frm文件:保存了每个表的元数据,包括表结构的定义等: .ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per ...
- mysql5.7根据.frm和.ibd文件恢复表结构和数据
一.恢复表结构 1.环境:Windows .mysql5.7:首先创建一个数据库,可以通过navicat来创建: 2.使用当前创建的数据库:use ww; 3.随意创建一张表,但是这张表的名字 ...
- 通过.frm表结构和.ibd文件恢复数据
整个恢复过程其实可以总结为下面几步: (1):恢复表结构 (2):复制出来创建表的sql语句 (3):恢复表数据(在恢复表数据的时候,首先需要解除当前创建的表与默认生成的.ibd文件间的关系,接着将要 ...
- 【转&参考】MySQL利用frm和ibd文件进行数据恢复
MySQL利用frm和idb文件进行数据恢复 源MySQL现状: 版本:5.6.* 存储引擎:innodb存储引擎 要恢复数据库:skill 重点要恢复表:slot_value 已有的文件: 备份了所 ...
- MySQL表结构为InnoDB类型从ibd文件恢复数据
客户的机器系统异常关机,重启后mysql数据库不能正常启动,重装系统后发现数据库文件损坏,悲催的是客户数据库没有进行及时备份,只能想办法从数据库文件当中恢复,查找资料,试验各种方法,确认下面步骤可行: ...
- 亲測Mysql表结构为InnoDB类型从ibd文件恢复数据
客户的机器系统异常关机,重新启动后mysql数据库不能正常启动,重装系统后发现数据库文件损坏,悲催的是客户数据库没有进行及时备份,仅仅能想办法从数据库文件其中恢复,查找资料,试验各种方法,确认以下步骤 ...
- ubuntu下面mysql,通过载入txt文件初始化数据表
环境:ubuntu12.04 mysql(通过apt安装) (1)根据数据表中的属性列,对应在txt中构造记录(一行对应一条记录),不同属性之间通过tab键(以/root目录下构建的init.tx ...
- mysql数据恢复:.frm和.ibd,恢复表结构和数据
mysql数据恢复:.frm和.ibd,恢复表结构和数据 一.恢复表结构 二.恢复表数据 相关内容原文地址: CSDN:她说巷尾的樱花开了:mysql根据.frm和.ibd文件恢复表结构和数据 博客园 ...
随机推荐
- 可视化—gojs 超多超实用经验分享(一)
目录 1. 设置分组模板,默认样式,统一最小宽度,展开收起状态监听 2. 分组名称显示成员个数: 分组名称+成员个数: name(children) 3. 分组成员为空时,不显示 placeholde ...
- 安卓机上 4G 内存跑 alpaca,欢迎试用轻量级 LLM 模型推理框架 InferLLM
从 LLM 火爆以来,社区已经出现了非常多优秀的模型,当然他们最大的特点就是体积大,最近为了让大模型可以在更低端的设备上运行,社区做了非常多的工作, gptq 实现了将模型进行低比特量化,因此降低了运 ...
- #Python 文本包含函数,pandas库 Series.str.contains 函数
一:基础的函数组成 '''Series.str.contains(pat,case = True,flags = 0,na = nan,regex = True)'''测试pattern或regex是 ...
- 2022-09-01:字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之差。 给你一个字符串 s ,它只包含小写英文字母。请你返回 s 里所有 子字符串的 最大波
2022-09-01:字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之差. 给你一个字符串 s ,它只包含小写英文字母.请你返回 s 里所有 子字符串的 最大波 ...
- 2020-12-07:go中,slice的底层数据结构是什么?
福哥答案2020-12-07: 源码位于runtime/slice.go文件中的slice结构体. type slice struct { array unsafe.Pointer len int c ...
- 百度飞桨(PaddlePaddle) - PaddleOCR 文字识别简单使用
百度飞桨(PaddlePaddle)安装 OCR 文字检测(Differentiable Binarization --- DB) OCR的技术路线 PaddleHub 预训练模型的网络结构是 DB ...
- 记一次 .NET 某医院门诊软件 卡死分析
一:背景 1. 讲故事 前几天有位朋友找到我,说他们的软件在客户那边卡死了,让我帮忙看下是怎么回事?我就让朋友在程序卡死的时候通过 任务管理器 抓一个 dump 下来,虽然默认抓的是 wow64 ,不 ...
- Java程序设计复习提纲(下:图形界面)
目录 上:Java程序设计复习提纲(上:入门语法) - 孤飞 - 博客园 (cnblogs.com) 基本语法与编译运行 数据类型和关键字 常用语法 数组与字符串 异常处理 中:Java程序设计复习提 ...
- 【python基础】基本数据类型-数字类型
Python3 支持int(整型数据).float(浮点型数据).bool(布尔类型) 1.int(整型数据) 在Python 3里,只有一种整数类型 int,表示为长整型.像大多数语言一样,数值类型 ...
- JavaScript如何解决单线程缺陷——webWorker
解决JavaScript单线程问题--webWorkers 参考文档 使用 Web Workers - Web API 接口参考 | MDN (mozilla.org) MDN的介绍为: Web Wo ...